From a315c9d3d41f2d5d5124809a656fd6757c7fcd64 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Sat, 20 Jun 2026 22:47:46 +0300 Subject: [PATCH] fix(#63): require keystore env variables for release builds (#176) * fix(#63): require keystore env variables for release builds * fix(ci): conditionalize signing requirement to release tasks only --- README.md | 2 +- app/build.gradle.kts | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7e7f5666..3a682c70 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ The debug APK will be at `app/build/outputs/apk/debug/app-debug.apk`. ./gradlew assembleRelease -PversionName="1.2.0" -PversionCode="120" ``` -> **Note:** Release builds use debug signing keys by default. For Play Store distribution, configure a proper signing config. +> **Note:** Release builds require proper signing configuration. Ensure the environment variables `KEYSTORE_PATH`, `KEYSTORE_PASSWORD`, `KEY_ALIAS`, and `KEY_PASSWORD` are set before building. ### Install diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 78219149..a8111523 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,10 +29,32 @@ android { signingConfigs { create("release") { - storeFile = file(System.getenv("KEYSTORE_PATH") ?: "hermes-control-release.keystore.jks") - storePassword = System.getenv("KEYSTORE_PASSWORD") ?: "hermes_release" - keyAlias = System.getenv("KEY_ALIAS") ?: "hermes-control-release" - keyPassword = System.getenv("KEY_PASSWORD") ?: "hermes_release" + val isReleaseBuild = gradle.startParameter.taskNames.any { name -> + name.contains("Release", ignoreCase = true) || name == "build" + } + + if (isReleaseBuild) { + val storePath = System.getenv("KEYSTORE_PATH") + val storePass = System.getenv("KEYSTORE_PASSWORD") + val alias = System.getenv("KEY_ALIAS") + val keyPass = System.getenv("KEY_PASSWORD") + + require(!storePath.isNullOrEmpty()) { "KEYSTORE_PATH environment variable is not set" } + require(!storePass.isNullOrEmpty()) { "KEYSTORE_PASSWORD environment variable is not set" } + require(!alias.isNullOrEmpty()) { "KEY_ALIAS environment variable is not set" } + require(!keyPass.isNullOrEmpty()) { "KEY_PASSWORD environment variable is not set" } + + storeFile = file(storePath) + storePassword = storePass + keyAlias = alias + keyPassword = keyPass + } else { + // Dummy values for evaluation configuration during non-release builds + storeFile = file("dummy.keystore") + storePassword = "dummy" + keyAlias = "dummy" + keyPassword = "dummy" + } } }