Skip to content

Commit 205cbec

Browse files
committed
Improve efficiency of workflows
1 parent 12eeead commit 205cbec

3 files changed

Lines changed: 72 additions & 220 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: 'Setup Android Environment'
2+
description: 'Sets up JDK 21, Android SDK, configures gradle caching, and grants execution permission for gradlew.'
3+
4+
runs:
5+
using: "composite"
6+
steps:
7+
- name: Set up JDK 21
8+
uses: actions/setup-java@v5
9+
with:
10+
java-version: "21"
11+
distribution: "temurin"
12+
cache: gradle
13+
14+
- name: Set up Android SDK
15+
uses: android-actions/setup-android@v3
16+
with:
17+
packages: "platform-tools platforms;android-36 build-tools;34.0.0"
18+
accept-android-sdk-licenses: true
19+
20+
- name: Grant execute permission for gradlew
21+
run: chmod +x gradlew
22+
shell: bash

.github/workflows/deploy.yml

Lines changed: 39 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -7,53 +7,27 @@ permissions:
77
contents: read
88

99
jobs:
10-
build-gms-flavor-for-github:
10+
build-gms-flavor:
1111
runs-on: ubuntu-latest
12+
outputs:
13+
VERSION_NAME: ${{ steps.version.outputs.VERSION_NAME }}
1214
steps:
1315
- name: Checkout
1416
uses: actions/checkout@v6
1517
with:
1618
persist-credentials: false
1719

18-
- name: Set up JDK 21
19-
uses: actions/setup-java@v5
20-
with:
21-
java-version: "21"
22-
distribution: "temurin"
23-
cache: gradle
20+
- name: Setup Android Environment
21+
uses: ./.github/actions/setup-android-env
2422

25-
- name: Set up Android SDK
26-
uses: android-actions/setup-android@v3
27-
with:
28-
packages: "platform-tools platforms;android-36 build-tools;34.0.0"
29-
accept-android-sdk-licenses: true
23+
- name: Extract versionName
24+
id: version
25+
run: |
26+
VERSION_NAME=$(grep -oP 'versionName\s+"\K[^"]+' app/build.gradle || echo "0.0.0")
27+
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_OUTPUT
3028
31-
- name: Cache Gradle dependencies
32-
uses: actions/cache@v4
33-
with:
34-
path: |
35-
~/.gradle/caches
36-
~/.gradle/wrapper
37-
~/.gradle/daemon
38-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
39-
restore-keys: |
40-
${{ runner.os }}-gradle-
41-
42-
- name: Cache Android SDK
43-
uses: actions/cache@v4
44-
with:
45-
path: |
46-
~/.android/build-cache
47-
~/.android/cache
48-
key: ${{ runner.os }}-android-sdk-${{ hashFiles('**/build.gradle*') }}
49-
restore-keys: |
50-
${{ runner.os }}-android-sdk-
51-
52-
- name: Grant execute permission for gradlew
53-
run: chmod +x gradlew
54-
55-
- name: Build APK for Github release
56-
run: ./gradlew assembleGmsRelease --parallel --build-cache --configuration-cache
29+
- name: Build APK & Bundle for Github and Google Play
30+
run: ./gradlew assembleGmsRelease bundleGmsRelease --parallel --build-cache --configuration-cache
5731

5832
- name: Sign APK for Github release
5933
uses: r0adkll/sign-android-release@v1
@@ -75,148 +49,65 @@ jobs:
7549
name: github-release-apk
7650
path: app/build/outputs/apk/gms/release/app-release.apk
7751

78-
build-foss-flavor-for-github:
79-
runs-on: ubuntu-latest
80-
steps:
81-
- name: Checkout
82-
uses: actions/checkout@v4
83-
with:
84-
persist-credentials: false
85-
86-
- name: Set up JDK 21
87-
uses: actions/setup-java@v5
88-
with:
89-
java-version: "21"
90-
distribution: "temurin"
91-
cache: gradle
92-
93-
- name: Set up Android SDK
94-
uses: android-actions/setup-android@v3
95-
with:
96-
packages: "platform-tools platforms;android-36 build-tools;34.0.0"
97-
accept-android-sdk-licenses: true
98-
99-
- name: Cache Gradle dependencies
100-
uses: actions/cache@v4
101-
with:
102-
path: |
103-
~/.gradle/caches
104-
~/.gradle/wrapper
105-
~/.gradle/daemon
106-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
107-
restore-keys: |
108-
${{ runner.os }}-gradle-
109-
110-
- name: Cache Android SDK
111-
uses: actions/cache@v4
112-
with:
113-
path: |
114-
~/.android/build-cache
115-
~/.android/cache
116-
key: ${{ runner.os }}-android-sdk-${{ hashFiles('**/build.gradle*') }}
117-
restore-keys: |
118-
${{ runner.os }}-android-sdk-
119-
120-
- name: Grant execute permission for gradlew
121-
run: chmod +x gradlew
122-
123-
- name: Build APK for Github release
124-
run: ./gradlew assembleFossRelease --parallel --build-cache --configuration-cache
125-
126-
- name: Sign APK for Github release
52+
- name: Sign bundle for Google Play release
12753
uses: r0adkll/sign-android-release@v1
12854
with:
129-
releaseDirectory: app/build/outputs/apk/foss/release
55+
releaseDirectory: app/build/outputs/bundle/gmsRelease
13056
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
13157
alias: ${{ secrets.ALIAS }}
13258
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
13359
keyPassword: ${{ secrets.KEY_PASSWORD }}
134-
env:
135-
BUILD_TOOLS_VERSION: "34.0.0"
13660

137-
- name: Rename Github APK file
138-
run: mv app/build/outputs/apk/foss/release/app-foss-release-unsigned-signed.apk app/build/outputs/apk/foss/release/app-release-foss.apk
61+
- name: Rename Google Play bundle file
62+
run: mv app/build/outputs/bundle/gmsRelease/app-gms-release.aab app/build/outputs/bundle/gmsRelease/app-release.aab
13963

140-
- name: Upload APK to Github release artifacts
64+
- name: Upload bundle to Github release artifacts
14165
uses: actions/upload-artifact@v7
14266
with:
143-
name: github-foss-release-apk
144-
path: app/build/outputs/apk/foss/release/app-release-foss.apk
67+
name: google-play-bundle
68+
path: app/build/outputs/bundle/gmsRelease/app-release.aab
14569

146-
build-gms-flavor-for-google-play:
70+
build-foss-flavor:
14771
runs-on: ubuntu-latest
14872
steps:
14973
- name: Checkout
15074
uses: actions/checkout@v4
15175
with:
15276
persist-credentials: false
15377

154-
- name: Set up JDK 21
155-
uses: actions/setup-java@v5
156-
with:
157-
java-version: 21
158-
distribution: "temurin"
159-
cache: gradle
160-
161-
- name: Set up Android SDK
162-
uses: android-actions/setup-android@v3
163-
with:
164-
packages: "platform-tools platforms;android-36 build-tools;34.0.0"
165-
accept-android-sdk-licenses: true
166-
167-
- name: Cache Gradle dependencies
168-
uses: actions/cache@v4
169-
with:
170-
path: |
171-
~/.gradle/caches
172-
~/.gradle/wrapper
173-
~/.gradle/daemon
174-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
175-
restore-keys: |
176-
${{ runner.os }}-gradle-
177-
178-
- name: Cache Android SDK
179-
uses: actions/cache@v4
180-
with:
181-
path: |
182-
~/.android/build-cache
183-
~/.android/cache
184-
key: ${{ runner.os }}-android-sdk-${{ hashFiles('**/build.gradle*') }}
185-
restore-keys: |
186-
${{ runner.os }}-android-sdk-
78+
- name: Setup Android Environment
79+
uses: ./.github/actions/setup-android-env
18780

188-
- name: Grant execute permission for gradlew
189-
run: chmod +x gradlew
190-
191-
- name: Build bundle for Google Play release
192-
run: ./gradlew bundleGmsRelease --parallel --build-cache --configuration-cache
81+
- name: Build APK for Github release
82+
run: ./gradlew assembleFossRelease --parallel --build-cache --configuration-cache
19383

194-
- name: Sign bundle for Google Play release
84+
- name: Sign APK for Github release
19585
uses: r0adkll/sign-android-release@v1
19686
with:
197-
releaseDirectory: app/build/outputs/bundle/gmsRelease
87+
releaseDirectory: app/build/outputs/apk/foss/release
19888
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
19989
alias: ${{ secrets.ALIAS }}
20090
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
20191
keyPassword: ${{ secrets.KEY_PASSWORD }}
92+
env:
93+
BUILD_TOOLS_VERSION: "34.0.0"
20294

203-
- name: Rename Google Play bundle file
204-
run: mv app/build/outputs/bundle/gmsRelease/app-gms-release.aab app/build/outputs/bundle/gmsRelease/app-release.aab
95+
- name: Rename Github APK file
96+
run: mv app/build/outputs/apk/foss/release/app-foss-release-unsigned-signed.apk app/build/outputs/apk/foss/release/app-release-foss.apk
20597

206-
- name: Upload bundle to Github release artifacts
98+
- name: Upload APK to Github release artifacts
20799
uses: actions/upload-artifact@v7
208100
with:
209-
name: google-play-bundle
210-
path: app/build/outputs/bundle/gmsRelease/app-release.aab
101+
name: github-foss-release-apk
102+
path: app/build/outputs/apk/foss/release/app-release-foss.apk
211103

212104
publish-built-files:
213105
permissions:
214106
contents: write
215107
needs:
216108
[
217-
"build-gms-flavor-for-github",
218-
"build-foss-flavor-for-github",
219-
"build-gms-flavor-for-google-play",
109+
"build-gms-flavor",
110+
"build-foss-flavor"
220111
]
221112
runs-on: ubuntu-latest
222113
steps:
@@ -243,20 +134,14 @@ jobs:
243134
name: google-play-bundle
244135
path: .
245136

246-
- name: Read APK info to get version code
247-
id: android_version
248-
uses: hkusu/apk-info-action@v1
249-
with:
250-
apk-path: app-release.apk
251-
252137
- name: Create Github release using release-drafter
253138
id: create_release
254139
uses: release-drafter/release-drafter@v7
255140
env:
256141
GITHUB_TOKEN: ${{ github.token }}
257142
with:
258-
tag: v${{ steps.android_version.outputs.version-name }}
259-
name: v${{ steps.android_version.outputs.version-name }}
143+
tag: v${{ needs.build-gms-flavor.outputs.VERSION_NAME }}
144+
name: v${{ needs.build-gms-flavor.outputs.VERSION_NAME }}
260145

261146
- name: Upload APK to Github release
262147
id: upload_release_asset
@@ -306,9 +191,8 @@ jobs:
306191
actions: write
307192
needs:
308193
[
309-
"build-gms-flavor-for-github",
310-
"build-gms-flavor-for-google-play",
311-
"publish-built-files",
194+
"build-gms-flavor",
195+
"publish-built-files"
312196
]
313197
runs-on: ubuntu-latest
314198
if: always()

0 commit comments

Comments
 (0)