Skip to content

Commit 43a8eee

Browse files
committed
Configure GitHub Actions to use repository secrets for signed release APK
1 parent d6ecd49 commit 43a8eee

2 files changed

Lines changed: 26 additions & 7 deletions

File tree

.github/workflows/build.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,24 @@ jobs:
3636
- name: Build Release APK
3737
run: ./gradlew assembleRelease --stacktrace --no-daemon
3838
env:
39+
KEYSTORE_FILE_BASE64: ${{ secrets.KEYSTORE_FILE }}
3940
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
41+
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
4042
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
4143

44+
- name: Decode Keystore
45+
if: env.KEYSTORE_FILE_BASE64 != ''
46+
run: echo "${{ secrets.KEYSTORE_FILE }}" | base64 -d > release.keystore
47+
4248
- name: Rename and Prepare APK
4349
run: |
4450
mkdir -p release-artifacts
45-
cp app/build/outputs/apk/release/app-release.apk release-artifacts/patchwork-v1.1.0.apk
46-
51+
if [ -f "app/build/outputs/apk/release/app-release.apk" ]; then
52+
cp app/build/outputs/apk/release/app-release.apk release-artifacts/patchwork-v1.1.0.apk
53+
else
54+
echo "Release APK not found"
55+
exit 1
56+
fi
4757
- name: Upload Release APK Artifact
4858
uses: actions/upload-artifact@v4
4959
with:

app/build.gradle.kts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,16 @@ android {
3434

3535
signingConfigs {
3636
create("release") {
37-
val keystoreFile = file("../patchwork-release.keystore")
37+
val keystoreFile = if (System.getenv("KEYSTORE_FILE_BASE64") != null) {
38+
file("../release.keystore")
39+
} else {
40+
file("../patchwork-release.keystore")
41+
}
42+
3843
if (keystoreFile.exists()) {
3944
storeFile = keystoreFile
4045
storePassword = System.getenv("KEYSTORE_PASSWORD") ?: "patchwork2026"
41-
keyAlias = "patchwork"
46+
keyAlias = System.getenv("KEY_ALIAS") ?: "patchwork"
4247
keyPassword = System.getenv("KEY_PASSWORD") ?: "patchwork2026"
4348
}
4449
}
@@ -51,9 +56,13 @@ android {
5156
getDefaultProguardFile("proguard-android-optimize.txt"),
5257
"proguard-rules.pro"
5358
)
54-
// Apply release signing if keystore exists, otherwise fallback to debug signing
55-
// so that the APK is still installable for testing/pre-release.
56-
val keystoreFile = file("../patchwork-release.keystore")
59+
// Use release signing if possible
60+
val keystoreFile = if (System.getenv("KEYSTORE_FILE_BASE64") != null) {
61+
file("../release.keystore")
62+
} else {
63+
file("../patchwork-release.keystore")
64+
}
65+
5766
if (keystoreFile.exists()) {
5867
signingConfig = signingConfigs.getByName("release")
5968
} else {

0 commit comments

Comments
 (0)