Skip to content

Commit d569c47

Browse files
committed
Add release build workflow with tag-based releases
1 parent b9862de commit d569c47

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

.github/workflows/release.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Release Build
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
workflow_dispatch:
8+
inputs:
9+
version:
10+
description: 'Version name (e.g., 1.0.0)'
11+
required: false
12+
default: ''
13+
14+
jobs:
15+
build-release:
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
22+
- name: Set up JDK 17
23+
uses: actions/setup-java@v4
24+
with:
25+
java-version: '17'
26+
distribution: 'temurin'
27+
cache: gradle
28+
29+
- name: Grant execute permission for gradlew
30+
run: chmod +x gradlew
31+
32+
- name: Decode Keystore
33+
if: ${{ env.KEYSTORE_BASE64 != '' }}
34+
env:
35+
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
36+
run: |
37+
echo "$KEYSTORE_BASE64" | base64 -d > app/release.keystore
38+
39+
- name: Build Release APK
40+
env:
41+
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
42+
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
43+
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
44+
run: |
45+
if [ -f "app/release.keystore" ]; then
46+
./gradlew assembleRelease \
47+
-Pandroid.injected.signing.store.file=$PWD/app/release.keystore \
48+
-Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
49+
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
50+
-Pandroid.injected.signing.key.password=$KEY_PASSWORD \
51+
--no-daemon
52+
else
53+
echo "No keystore found, building with debug signing"
54+
./gradlew assembleRelease --no-daemon
55+
fi
56+
57+
- name: Get version name
58+
id: version
59+
run: |
60+
VERSION=$(grep -oP 'versionName = "\K[^"]+' app/build.gradle.kts)
61+
echo "version=$VERSION" >> $GITHUB_OUTPUT
62+
63+
- name: Upload Release APK
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: AppControlX-v${{ steps.version.outputs.version }}-release
67+
path: app/build/outputs/apk/release/*.apk
68+
retention-days: 30
69+
70+
- name: Create GitHub Release
71+
if: startsWith(github.ref, 'refs/tags/')
72+
uses: softprops/action-gh-release@v1
73+
with:
74+
files: app/build/outputs/apk/release/*.apk
75+
generate_release_notes: true
76+
env:
77+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)