mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
ci: add coordinated release pipeline
This commit is contained in:
@@ -24,7 +24,7 @@ abstract class VerifyVnidropLibrariesTask : DefaultTask() {
|
||||
archive.getEntry(path)?.size?.takeIf { it > 0L } == null
|
||||
}
|
||||
check(missing.isEmpty()) {
|
||||
"Debug APK has missing or empty VniDrop libraries: ${missing.joinToString()}"
|
||||
"APK has missing or empty VniDrop libraries: ${missing.joinToString()}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,19 @@ plugins {
|
||||
|
||||
val appVersion = rootProject.extra["vnidrop.productVersion"] as String
|
||||
val androidVersionCode = rootProject.extra["vnidrop.androidVersionCode"] as Int
|
||||
val releaseKeystorePath = providers.environmentVariable("VNIDROP_ANDROID_KEYSTORE_PATH").orNull
|
||||
val releaseKeystorePassword = providers.environmentVariable("VNIDROP_ANDROID_KEYSTORE_PASSWORD").orNull
|
||||
val releaseKeyAlias = providers.environmentVariable("VNIDROP_ANDROID_KEY_ALIAS").orNull
|
||||
val releaseKeyPassword = providers.environmentVariable("VNIDROP_ANDROID_KEY_PASSWORD").orNull
|
||||
val releaseSigningValues = listOf(
|
||||
releaseKeystorePath,
|
||||
releaseKeystorePassword,
|
||||
releaseKeyAlias,
|
||||
releaseKeyPassword,
|
||||
)
|
||||
require(releaseSigningValues.all { it == null } || releaseSigningValues.all { it != null }) {
|
||||
"Android release signing requires the keystore path, keystore password, key alias, and key password together"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
@@ -58,6 +71,20 @@ android {
|
||||
namespace = "com.vnidrop.app"
|
||||
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||
|
||||
signingConfigs {
|
||||
if (releaseKeystorePath != null) {
|
||||
create("release") {
|
||||
val keystoreFile = rootProject.file(releaseKeystorePath)
|
||||
.also { require(it.isFile) { "Android release keystore was not found" } }
|
||||
.also { require(it.canRead()) { "Android release keystore is not readable" } }
|
||||
storeFile = keystoreFile
|
||||
storePassword = releaseKeystorePassword
|
||||
keyAlias = releaseKeyAlias
|
||||
keyPassword = releaseKeyPassword
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.vnidrop.app"
|
||||
minSdk = libs.versions.android.minSdk.get().toInt()
|
||||
@@ -79,6 +106,7 @@ android {
|
||||
buildTypes {
|
||||
getByName("release") {
|
||||
isMinifyEnabled = false
|
||||
signingConfig = signingConfigs.findByName("release")
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
@@ -90,6 +118,10 @@ android {
|
||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/aarch64-linux-android/debug"))
|
||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/x86_64-linux-android/debug"))
|
||||
}
|
||||
getByName("release") {
|
||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/aarch64-linux-android/release"))
|
||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/x86_64-linux-android/release"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +132,12 @@ tasks.configureEach {
|
||||
":shared:copyAndroidAndroidX64Debug",
|
||||
)
|
||||
}
|
||||
if (name == "mergeReleaseJniLibFolders" || name == "mergeReleaseNativeLibs") {
|
||||
dependsOn(
|
||||
":shared:copyAndroidAndroidArm64Release",
|
||||
":shared:copyAndroidAndroidX64Release",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val verifyDebugVnidropLibraries = tasks.register<VerifyVnidropLibrariesTask>("verifyDebugVnidropLibraries") {
|
||||
|
||||
Reference in New Issue
Block a user