Skip to content

Commit d14a6b2

Browse files
committed
update deploy workflow
1 parent c3a3d43 commit d14a6b2

1 file changed

Lines changed: 71 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Release APK
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # triggered by tags like v2.1.5, v2.2.0, etc.
7+
8+
jobs:
9+
release:
10+
name: Build & Publish APK
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
with:
17+
submodules: recursive
18+
19+
- name: Set up JDK 17
20+
uses: actions/setup-java@v4
21+
with:
22+
java-version: '17'
23+
distribution: 'temurin'
24+
cache: gradle
25+
26+
- name: Create google-services.json
27+
run: echo '${{ secrets.GOOGLE_JSON }}' | base64 --decode > app/google-services.json
28+
29+
- name: Validate Gradle wrapper
30+
uses: gradle/wrapper-validation-action@v3
31+
32+
- name: Grant execute permission for gradlew
33+
run: chmod +x gradlew
34+
35+
- name: Build release APK
36+
run: ./gradlew assembleRelease
37+
38+
- name: Sign APK
39+
if: ${{ secrets.KEYSTORE_BASE64 != '' }}
40+
uses: r0adkll/sign-android-release@v1
41+
id: sign_app
42+
with:
43+
releaseDirectory: app/build/outputs/apk/release
44+
signingKeyBase64: ${{ secrets.KEYSTORE_BASE64 }}
45+
alias: ${{ secrets.KEY_ALIAS }}
46+
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
47+
keyPassword: ${{ secrets.KEY_PASSWORD }}
48+
49+
- name: Upload signed APK to GitHub Releases
50+
if: ${{ secrets.KEYSTORE_BASE64 != '' }}
51+
uses: softprops/action-gh-release@v2
52+
with:
53+
files: ${{ steps.sign_app.outputs.signedReleaseFile }}
54+
generate_release_notes: true
55+
draft: false
56+
prerelease: false
57+
env:
58+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59+
60+
- name: Upload unsigned APK to GitHub Releases (fallback)
61+
if: ${{ secrets.KEYSTORE_BASE64 == '' }}
62+
uses: softprops/action-gh-release@v2
63+
with:
64+
files: app/build/outputs/apk/release/app-release-unsigned.apk
65+
generate_release_notes: true
66+
draft: false
67+
prerelease: false
68+
body: |
69+
> ⚠️ **Note:** This APK is unsigned. You may need to enable "Install from unknown sources" and sign it manually, or use the Play Store version instead.
70+
env:
71+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)