fix: make release signing optional for CI debug builds
This commit is contained in:
parent
65bf0de9f7
commit
3a70b6ac2d
|
|
@ -7,39 +7,19 @@ plugins {
|
||||||
id("com.google.gms.google-services")
|
id("com.google.gms.google-services")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Release signing is intentionally optional during configuration so debug/profile
|
||||||
|
// builds (including GitHub Actions CI) do not require private signing credentials.
|
||||||
val keystoreProperties = Properties()
|
val keystoreProperties = Properties()
|
||||||
val keystorePropertiesFile = rootProject.file("key.properties")
|
val keystorePropertiesFile = rootProject.file("key.properties")
|
||||||
|
|
||||||
if (!keystorePropertiesFile.exists()) {
|
if (keystorePropertiesFile.exists()) {
|
||||||
throw GradleException(
|
FileInputStream(keystorePropertiesFile).use {
|
||||||
"Missing android/key.properties. " +
|
keystoreProperties.load(it)
|
||||||
"Create it from android/key.properties.template."
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
FileInputStream(keystorePropertiesFile).use {
|
|
||||||
keystoreProperties.load(it)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun requiredKeystoreProperty(name: String): String {
|
|
||||||
val value = keystoreProperties.getProperty(name)?.trim()
|
|
||||||
|
|
||||||
println("MotorSignal signing property [$name]: ${if (value.isNullOrEmpty()) "<MISSING>" else "<PRESENT>"}")
|
|
||||||
|
|
||||||
if (value.isNullOrEmpty()) {
|
|
||||||
println("Properties actually loaded by Gradle: ${keystoreProperties.keys}")
|
|
||||||
throw GradleException(
|
|
||||||
"Missing $name in android/key.properties"
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return value
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val releaseStorePassword = requiredKeystoreProperty("storePassword")
|
fun optionalKeystoreProperty(name: String): String? =
|
||||||
val releaseKeyPassword = requiredKeystoreProperty("keyPassword")
|
keystoreProperties.getProperty(name)?.trim()?.takeIf { it.isNotEmpty() }
|
||||||
val releaseKeyAlias = requiredKeystoreProperty("keyAlias")
|
|
||||||
val releaseStoreFile = requiredKeystoreProperty("storeFile")
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "app.motorsignal.motorcycle"
|
namespace = "app.motorsignal.motorcycle"
|
||||||
|
|
@ -60,21 +40,38 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
create("release") {
|
val releaseStorePassword = optionalKeystoreProperty("storePassword")
|
||||||
keyAlias = releaseKeyAlias
|
val releaseKeyPassword = optionalKeystoreProperty("keyPassword")
|
||||||
keyPassword = releaseKeyPassword
|
val releaseKeyAlias = optionalKeystoreProperty("keyAlias")
|
||||||
storePassword = releaseStorePassword
|
val releaseStoreFile = optionalKeystoreProperty("storeFile")
|
||||||
storeFile = rootProject.file(releaseStoreFile)
|
|
||||||
storeType = "PKCS12"
|
if (releaseStorePassword != null &&
|
||||||
|
releaseKeyPassword != null &&
|
||||||
|
releaseKeyAlias != null &&
|
||||||
|
releaseStoreFile != null
|
||||||
|
) {
|
||||||
|
create("release") {
|
||||||
|
keyAlias = releaseKeyAlias
|
||||||
|
keyPassword = releaseKeyPassword
|
||||||
|
storePassword = releaseStorePassword
|
||||||
|
storeFile = rootProject.file(releaseStoreFile)
|
||||||
|
storeType = "PKCS12"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
signingConfig = signingConfigs.getByName("release")
|
val releaseSigningConfig = signingConfigs.findByName("release")
|
||||||
|
?: throw GradleException(
|
||||||
|
"Release signing is not configured. " +
|
||||||
|
"Provide android/key.properties with storePassword, keyPassword, " +
|
||||||
|
"keyAlias, and storeFile for a signed release build."
|
||||||
|
)
|
||||||
|
signingConfig = releaseSigningConfig
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue