-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (110 loc) · 5.53 KB
/
android.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
name: Android CI
env:
# The name of the main module repository
main_project_module: app
# The name of the Play Store
playstore_name: Checklist
# Keystore Path (Replace to your KeyStore if you wanna use this CI in your forked)
ks_path: KeyStore.jks
# Keystore Password (Replace ${{ secrets.KEY_STORE }} to your password such as 123456)
ks_store_pass: ${{ secrets.KEY_STORE }}
# Keystore Alias (Replace to your alias)
ks_alias: ${{ secrets.KEY_STORE_ALIAS }}
# Keystore Alias Password (Replace to your alias password)
ks_alias_pass: ${{ secrets.KEY_STORE }}
on:
# Triggers the workflow on push or pull request events but only for default and protected branches
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Set Current Date As Env Variable
- name: Set current date as env variable
run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
# Set Repository Name As Env Variable
- name: Set repository name as env variable
run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV
- name: Set Up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'
cache: 'gradle'
- name: Change wrapper permissions
run: chmod +x ./gradlew
# Run Tests Build
- name: Run gradle tests
run: ./gradlew test
# Run Build Project
- name: Build gradle project
run: ./gradlew build
# Create APK Debug
- name: Build apk debug project (APK) - ${{ env.main_project_module }} module
run: ./gradlew assembleDebug
# Create Bundle AAB Release
# Noted for main module build [main_project_module]:bundleRelease
- name: Build app bundle release (AAB) - ${{ env.main_project_module }} module
run: ./gradlew ${{ env.main_project_module }}:bundleRelease
# - name: Build APK(s) Debug from bundle using bundletool
# run: java -jar ".github/lib/bundletool.jar" build-apks --bundle=${{ env.main_project_module }}/build/outputs/bundle/debug/${{ env.artifact_name }}-debug.aab --output=${{ env.main_project_module }}/build/outputs/bundle/debug/${{ env.artifact_name }}-debug.apks --mode=universal
- name: Set Env Artifact name from generated aab
run: |
cd ${{ env.main_project_module }}/build/outputs/bundle/release/
files=(*)
echo "generated_name_aab=${files[0]%.*}" >> $GITHUB_ENV
# Build APK From Bundle Using Bundletool
# Noted For Output [main_project_module]/build/outputs/bundle/release/
- name: Build APK(s) Release from bundle using bundletool (Path same with bundle output)
run: java -jar ".github/lib/bundletool.jar" build-apks --bundle=${{ env.main_project_module }}/build/outputs/bundle/release/${{ env.generated_name_aab }}.aab --output=${{ env.main_project_module }}/build/outputs/bundle/release/${{ env.generated_name_aab }}.apks --mode=universal --ks="app/${{ env.ks_path }}" --ks-pass=pass:${{ env.ks_store_pass }} --ks-key-alias=${{ env.ks_alias }} --key-pass=pass:${{ env.ks_alias_pass }}
# Duplicate APK(s) Release to zip file and extract
- name: Duplicate APK(s) Release to zip file and extract
run: |
cd ${{ env.main_project_module }}/build/outputs/bundle/release/
unzip -p ${{ env.generated_name_aab }}.apks universal.apk > ${{ env.generated_name_aab }}.apk
- name: Classification
run: |
cd ${{ env.main_project_module }}/build/outputs/bundle/release/
mkdir ./apks/
mkdir ./apk/
mkdir ./aab/
mv ./app-release.apks ./apks/app-release.apks
mv ./app-release.apk ./apk/app-release.apk
mv ./app-release.aab ./aab/app-release.aab
# Upload Artifact Build
# Debug apk
- name: Upload APK Debug - ${{ env.repository_name }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APK debug generated
path: ${{ env.main_project_module }}/build/outputs/apk/debug/
# Unsigned Release
- name: Upload Unsigned APK Release - ${{ env.repository_name }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APK unsigned release generated
path: ${{ env.main_project_module }}/build/outputs/apk/release/
# APKS
- name: Upload APKS Release - ${{ env.repository_name }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APKS release generated
path: ${{ env.main_project_module }}/build/outputs/bundle/release/apks/
# APK
- name: Upload APK Release - ${{ env.repository_name }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APK release generated
path: ${{ env.main_project_module }}/build/outputs/bundle/release/apk/
# AAB
- name: Upload AAB (App Bundle) Release - ${{ env.repository_name }}
uses: actions/upload-artifact@v3
with:
name: ${{ env.date_today }} - ${{ env.playstore_name }} - App bundle(s) AAB release generated
path: ${{ env.main_project_module }}/build/outputs/bundle/release/aab/