fix: make release signing optional for CI debug builds

This commit is contained in:
bponders12-cell 2026-08-31 22:32:53 -04:00
parent 65bf0de9f7
commit 3a70b6ac2d
1 changed files with 35 additions and 38 deletions

View File

@ -7,39 +7,19 @@ plugins {
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 keystorePropertiesFile = rootProject.file("key.properties")
if (!keystorePropertiesFile.exists()) {
throw GradleException(
"Missing android/key.properties. " +
"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"
)
if (keystorePropertiesFile.exists()) {
FileInputStream(keystorePropertiesFile).use {
keystoreProperties.load(it)
}
return value
}
val releaseStorePassword = requiredKeystoreProperty("storePassword")
val releaseKeyPassword = requiredKeystoreProperty("keyPassword")
val releaseKeyAlias = requiredKeystoreProperty("keyAlias")
val releaseStoreFile = requiredKeystoreProperty("storeFile")
fun optionalKeystoreProperty(name: String): String? =
keystoreProperties.getProperty(name)?.trim()?.takeIf { it.isNotEmpty() }
android {
namespace = "app.motorsignal.motorcycle"
@ -60,21 +40,38 @@ android {
}
signingConfigs {
create("release") {
keyAlias = releaseKeyAlias
keyPassword = releaseKeyPassword
storePassword = releaseStorePassword
storeFile = rootProject.file(releaseStoreFile)
storeType = "PKCS12"
val releaseStorePassword = optionalKeystoreProperty("storePassword")
val releaseKeyPassword = optionalKeystoreProperty("keyPassword")
val releaseKeyAlias = optionalKeystoreProperty("keyAlias")
val releaseStoreFile = optionalKeystoreProperty("storeFile")
if (releaseStorePassword != null &&
releaseKeyPassword != null &&
releaseKeyAlias != null &&
releaseStoreFile != null
) {
create("release") {
keyAlias = releaseKeyAlias
keyPassword = releaseKeyPassword
storePassword = releaseStorePassword
storeFile = rootProject.file(releaseStoreFile)
storeType = "PKCS12"
}
}
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
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 {
compilerOptions {