-
Notifications
You must be signed in to change notification settings - Fork 22
142 lines (119 loc) · 4.61 KB
/
android-release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Music Automatic Release
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
- "v[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+"
workflow_dispatch:
jobs:
buildAPKs:
name: build APKs from Release Tag for GitHub Release
runs-on: ubuntu-latest
permissions:
contents: write
defaults:
run:
working-directory: mobile
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js & pnpm
uses: ./.github/actions/setup
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: microsoft
java-version: 17
- name: Setup Gradle action for optimized execution and caching
uses: gradle/actions/setup-gradle@v4
- name: Save commit tag as environment variable & display it
run: |
COMMIT_TAG=$(git describe --tags --abbrev=0)
echo "COMMIT_TAG=${COMMIT_TAG}" >> $GITHUB_ENV
echo "Commit Tag: $COMMIT_TAG"
- name: Create `sentry.properties` file
run: |
echo "${{ secrets.SENTRY_PROPERTIES }}" > android/sentry.properties
- name: Add upload key secrets for signing APKs
run: |
git submodule update --init --recursive
echo "${{ secrets.RELEASE_CRED }}" >> android/gradle.properties
- name: Build upload keystore `.jks` file
uses: timheuer/[email protected]
with:
fileName: keystore.jks
fileDir: mobile/android/app
encodedString: ${{ secrets.KEYSTORE_BASE64 }}
- name: Clean generated builds
run: rm -rf android/app/build/generated/
- name: Build and sign APKs with Gradle
run: cd android && chmod +x gradlew && ./gradlew assembleRelease
- name: Zip files used for deobfuscation
run: |
zip -j deobfuscate.zip android/app/build/outputs/mapping/release/mapping.txt \
android/app/build/outputs/native-debug-symbols/release/native-debug-symbols.zip
- name: Create GitHub Release draft with APKs
uses: softprops/action-gh-release@v2
with:
name: ${{ env.COMMIT_TAG }}
tag_name: ${{ env.COMMIT_TAG }}
token: ${{ secrets.MISSINGCORE_BOT_GITHUB_TOKEN }}
files: |
mobile/android/app/build/outputs/apk/release/*.apk
mobile/deobfuscate.zip
draft: true
# Mark release as prerelease if the tag contains `-rc.`
prerelease: ${{ contains(env.COMMIT_TAG, '-rc.') }}
generate_release_notes: true
buildAAB:
name: build AAB from Release Tag for Play Console
runs-on: ubuntu-latest
permissions:
contents: write
defaults:
run:
working-directory: mobile
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js & pnpm
uses: ./.github/actions/setup
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: microsoft
java-version: 17
- name: Setup Gradle action for optimized execution and caching
uses: gradle/actions/setup-gradle@v4
- name: Create `sentry.properties` file
run: |
echo "${{ secrets.SENTRY_PROPERTIES }}" > android/sentry.properties
- name: Add upload key secrets for signing APKs
run: |
git submodule update --init --recursive
echo "${{ secrets.RELEASE_CRED }}" >> android/gradle.properties
- name: Build upload keystore `.jks` file
uses: timheuer/[email protected]
with:
fileName: keystore.jks
fileDir: mobile/android/app
encodedString: ${{ secrets.KEYSTORE_BASE64 }}
- name: Clean generated builds
run: rm -rf android/app/build/generated/
- name: Build and sign app bundle with Gradle
run: cd android && chmod +x gradlew && ./gradlew bundleRelease
# Save `.aab` as artifact before upload to Play Console incase upload fails.
- name: Upload AAB as artifact
uses: actions/upload-artifact@v4
with:
name: outputAAB
path: mobile/android/app/build/outputs/bundle/release/*.aab
- name: Upload AAB to Google Play Console "Internal Testing" track
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }}
packageName: com.cyanchill.missingcore.music
releaseFiles: mobile/android/app/build/outputs/bundle/release/app-release.aab
# No need for `changesNotSentForReview: true` as internal track shouldn't
# get reviewed.
track: internal