Skip to content

Commit c16aacd

Browse files
authored
Create build.yaml
1 parent 6b574fa commit c16aacd

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

.github/workflows/build.yaml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: Build and Release APK
2+
3+
on:
4+
push:
5+
branches:
6+
- master # Change this to your main branch
7+
workflow_dispatch:
8+
9+
10+
jobs:
11+
check_secrets:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Check GitHub Secrets
16+
run: |
17+
if [ -z "${{ secrets.KEYSTORE_FILE }}" ]; then
18+
echo "Missing KEYSTORE_FILE secret"
19+
exit 1
20+
fi
21+
if [ -z "${{ secrets.KEYSTORE_PASSWORD }}" ]; then
22+
echo "Missing KEYSTORE_PASSWORD secret"
23+
exit 1
24+
fi
25+
if [ -z "${{ secrets.KEY_ALIAS }}" ]; then
26+
echo "Missing KEY_ALIAS secret"
27+
exit 1
28+
fi
29+
if [ -z "${{ secrets.KEY_PASSWORD }}" ]; then
30+
echo "Missing KEY_PASSWORD secret"
31+
exit 1
32+
fi
33+
if [ -z "${{ secrets.MAP_URL }}" ]; then
34+
echo "Missing MAP_URL secret"
35+
exit 1
36+
fi
37+
if [ -z "${{ secrets.GITHUB_TOKEN }}" ]; then
38+
echo "Missing GITHUB_TOKEN secret"
39+
exit 1
40+
fi
41+
if [ -z "${{ secrets.APP_NAME }}" ]; then
42+
echo "Missing APP_NAME secret"
43+
exit 1
44+
fi
45+
46+
build:
47+
needs: check_secrets
48+
runs-on: ubuntu-latest
49+
50+
steps:
51+
- name: Checkout code
52+
uses: actions/checkout@v2
53+
54+
- name: Git Submodule Update
55+
run: |
56+
git pull --recurse-submodules
57+
git submodule update --init --recursive
58+
59+
- name: Set up JDK
60+
uses: actions/setup-java@v2
61+
with:
62+
distribution: 'adopt'
63+
java-version: '17'
64+
65+
- name: Restore keystore from secret
66+
run: echo "${{ secrets.KEYSTORE_FILE }}" | tr -d '\n' | base64 -d > /home/runner/work/reactmap-android/reactmap-android/keystore.jks
67+
68+
- name: Check if keystore is available
69+
run: ls -a /home/runner/work/reactmap-android/reactmap-android/keystore.jks
70+
71+
- name: Make Gradlew executable
72+
run: chmod +x ./gradlew
73+
74+
- name: Extract versionName from gradle.properties
75+
id: extract_version
76+
run: echo "VERSION_NAME=$(grep 'reactmap.versionName' gradle.properties | cut -d'=' -f2 | tr -d '[:space:]')" >> $GITHUB_ENV
77+
78+
- name: Set Package Name
79+
run: echo "PACKAGE_NAME=${{ secrets.PACKAGE_NAME || 'be.mygod.reactmap' }}" >> $GITHUB_ENV
80+
81+
- name: Sign APK and create release
82+
run: |
83+
cd /home/runner/work/reactmap-android/reactmap-android/
84+
./gradlew assembleRelease -Pandroid.injected.signing.store.file=/home/runner/work/reactmap-android/reactmap-android/keystore.jks -Pandroid.injected.signing.store.password=${{ secrets.KEYSTORE_PASSWORD }} -Pandroid.injected.signing.key.alias=${{ secrets.KEY_ALIAS }} -Pandroid.injected.signing.key.password=${{ secrets.KEY_PASSWORD }} -Preactmap.defaultDomain=${{ secrets.MAP_URL }} -Preactmap.packageName=${{ env.PACKAGE_NAME }} -Preactmap.appName=${{ secrets.APP_NAME }}
85+
86+
- name: List APK directory - apk
87+
run: ls -R /home/runner/work/reactmap-android/reactmap-android/app/build/outputs/apk/
88+
89+
- name: Upload Artifact
90+
uses: actions/[email protected]
91+
with:
92+
name: Reactmap-android
93+
path: /home/runner/work/reactmap-android/reactmap-android/app/build/outputs/apk/release/app-release.apk
94+
95+
- name: Rename all APK variant files
96+
run: |
97+
cd /home/runner/work/reactmap-android/reactmap-android/app/build/outputs/apk/release
98+
for f in app-*-release.apk; do
99+
new_name="${f/app/${{ secrets.APP_NAME }}-v${{ env.VERSION_NAME }}}"
100+
mv "$f" "$new_name"
101+
done
102+
103+
- name: Release with ncipollo/release-action
104+
id: release
105+
uses: ncipollo/release-action@v1
106+
with:
107+
artifacts: /home/runner/work/reactmap-android/reactmap-android/app/build/outputs/apk/release/${{ secrets.APP_NAME }}-v${{ env.VERSION_NAME }}-*-release.apk
108+
token: ${{ secrets.GITHUB_TOKEN }}
109+
generateReleaseNotes: true
110+
skipIfReleaseExists: true
111+
tag: v${{ env.VERSION_NAME }}
112+
113+
- name: Send Discord webhook notification
114+
if: env.DISCORD_WEBHOOK_URL && steps.release.outputs.release_created == 'true'
115+
run: |
116+
release_url="https://github.com/${{ github.repository }}/releases/tag/v${{ env.VERSION_NAME }}"
117+
curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"New release v${{ env.VERSION_NAME }} is available! [View Release]($release_url)\"}" ${{ secrets.DISCORD_WEBHOOK_URL }}
118+
env:
119+
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}

0 commit comments

Comments
 (0)