From fe7a457030a965237e1c43f40f26f1d2a6ec99c8 Mon Sep 17 00:00:00 2001 From: Vladimir Roncevic Date: Thu, 20 Aug 2026 16:37:05 +0200 Subject: [PATCH] [abcomm] Updated release workflow --- .github/workflows/release.yml | 14 ++++++----- app/build.gradle.kts | 24 ++++++++++++------- app/src/main/res/drawable/ic_cyber_logo.xml | 2 +- .../res/drawable/ic_launcher_foreground.xml | 2 +- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fe313d3..aa06b2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,11 +24,16 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew + - name: Decode Keystore + id: decode_keystore + run: | + echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > app/keystore.jks + echo "KEYSTORE_PATH=keystore.jks" >> $GITHUB_ENV + - name: Build Release APK run: ./gradlew assembleRelease env: - # These will be needed in build.gradle.kts to sign the APK - # If not provided, it will still build an unsigned APK + KEYSTORE_PATH: ${{ env.KEYSTORE_PATH }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} KEY_ALIAS: ${{ secrets.KEY_ALIAS }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} @@ -36,10 +41,7 @@ jobs: - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - files: app/build/outputs/apk/release/app-release-unsigned.apk # Default if not signed - # If signed, the path might be app-release.apk - # We can use a wildcard to be safe - # files: app/build/outputs/apk/release/*.apk + files: app/build/outputs/apk/release/*.apk generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 018f4d1..67bb6cd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -20,12 +20,16 @@ android { signingConfigs { create("release") { - // Preuzimanje podataka iz Environment varijabli (za GitHub Actions) - // ili korišćenje lokalnih vrednosti ako postoje - storeFile = file(System.getenv("KEYSTORE_PATH") ?: "keystore.jks") - storePassword = System.getenv("KEYSTORE_PASSWORD") - keyAlias = System.getenv("KEY_ALIAS") - keyPassword = System.getenv("KEY_PASSWORD") + val path = System.getenv("KEYSTORE_PATH") ?: "keystore.jks" + val ksFile = file(path) + + // Use release signing only if the file exists and parameters are provided + if (ksFile.exists()) { + storeFile = ksFile + storePassword = System.getenv("KEYSTORE_PASSWORD") + keyAlias = System.getenv("KEY_ALIAS") + keyPassword = System.getenv("KEY_PASSWORD") + } } } @@ -37,9 +41,11 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) - // Koristi release potpisivanje samo ako su parametri dostupni - if (System.getenv("KEYSTORE_PASSWORD") != null) { - signingConfig = signingConfigs.getByName("release") + + // Set signingConfig only if parameters are actually loaded + val releaseConfig = signingConfigs.getByName("release") + if (releaseConfig.storeFile?.exists() == true) { + signingConfig = releaseConfig } } } diff --git a/app/src/main/res/drawable/ic_cyber_logo.xml b/app/src/main/res/drawable/ic_cyber_logo.xml index d1672a1..f1f7e09 100644 --- a/app/src/main/res/drawable/ic_cyber_logo.xml +++ b/app/src/main/res/drawable/ic_cyber_logo.xml @@ -17,7 +17,7 @@ android:strokeLineCap="round" android:strokeLineJoin="round" /> - + - +