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") 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(
"Missing android/key.properties. " +
"Create it from android/key.properties.template."
)
}
FileInputStream(keystorePropertiesFile).use { FileInputStream(keystorePropertiesFile).use {
keystoreProperties.load(it) 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 fun optionalKeystoreProperty(name: String): String? =
} keystoreProperties.getProperty(name)?.trim()?.takeIf { it.isNotEmpty() }
val releaseStorePassword = requiredKeystoreProperty("storePassword")
val releaseKeyPassword = requiredKeystoreProperty("keyPassword")
val releaseKeyAlias = requiredKeystoreProperty("keyAlias")
val releaseStoreFile = requiredKeystoreProperty("storeFile")
android { android {
namespace = "app.motorsignal.motorcycle" namespace = "app.motorsignal.motorcycle"
@ -60,6 +40,16 @@ android {
} }
signingConfigs { signingConfigs {
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") { create("release") {
keyAlias = releaseKeyAlias keyAlias = releaseKeyAlias
keyPassword = releaseKeyPassword keyPassword = releaseKeyPassword
@ -68,10 +58,17 @@ android {
storeType = "PKCS12" 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
} }
} }
} }