-
Notifications
You must be signed in to change notification settings - Fork 1
193 lines (167 loc) · 7.99 KB
/
Generated APK AAB (Upload - Create Artifact To Github Action & 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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
name: Generated APK AAB (Upload - Create Artifact To Github Action & Release)
env:
main_project_module: app
playstore_name: V2PlusApp
on:
push:
branches:
- 'main'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set executable permission for Gradle
run: chmod +x gradlew
- name: Set current date as env variable
run: echo "DATE_TODAY=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
- name: Set repository name as env variable
run: echo "REPO_NAME=$(basename ${{ github.repository }})" >> $GITHUB_ENV
- name: Determine build version
run: |
BASE_TAG="v${{ env.DATE_TODAY }}"
EXISTING_VERSIONS=$(git tag --list "$BASE_TAG*")
if [[ -z "$EXISTING_VERSIONS" ]]; then
VERSION="${BASE_TAG}-v1"
else
LAST_VERSION=$(echo "$EXISTING_VERSIONS" | sort -V | tail -n 1 | grep -oP '\d+$')
NEXT_VERSION=$((LAST_VERSION + 1))
VERSION="${BASE_TAG}-v$NEXT_VERSION"
fi
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "Final version: $VERSION"
- name: Set Up JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
cache: 'gradle'
- name: Install Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-version: "8.9"
- name: Run Gradle Tests
run: ./gradlew test
- name: Build Gradle Project
run: ./gradlew build -x lint --continue
- name: Build APK Debug
run: ./gradlew assembleDebug
- name: Build APK Release
run: ./gradlew assembleRelease
- name: Build AAB Release
run: ./gradlew ${{ env.main_project_module }}:bundleRelease
# امضای APK Release
- name: Sign APK Release
run: |
echo "$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" | base64 --decode > keystore.jks
apksigner sign --ks keystore.jks --ks-pass pass:${{ secrets.SIGNING_STORE_PASSWORD }} \
--key-pass pass:${{ secrets.SIGNING_KEY_PASSWORD }} --ks-key-alias ${{ secrets.SIGNING_KEY_ALIAS }} \
--out ${{ env.main_project_module }}/build/outputs/apk/release/app-release-signed.apk ${{ env.main_project_module }}/build/outputs/apk/release/app-release-unsigned.apk
# Verify the APK signature
- name: Verify APK Signature
run: apksigner verify ${{ env.main_project_module }}/build/outputs/apk/release/app-release-signed.apk
# آپلود خروجیها به عنوان Artifact برای دانلود از GitHub Actions
- name: Upload APK Debug as Artifact
uses: actions/upload-artifact@v4
with:
name: APK-Debug-${{ env.VERSION }}
path: ${{ env.main_project_module }}/build/outputs/apk/debug/*.apk
- name: Upload APK Release as Artifact
uses: actions/upload-artifact@v4
with:
name: APK-Release-${{ env.VERSION }}
path: ${{ env.main_project_module }}/build/outputs/apk/release/*.apk
- name: Upload AAB as Artifact
uses: actions/upload-artifact@v4
with:
name: AAB-Release-${{ env.VERSION }}
path: ${{ env.main_project_module }}/build/outputs/bundle/release/*.aab
# ایجاد نسخه جدید در Release GitHub با متن `Released by GitHub Actions`
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.VERSION }}
name: "Release - ${{ env.VERSION }}"
body: "### Released by GitHub Actions 🚀"
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# آپلود APK Debug به Releases
- name: Upload APK Debug to Release
uses: softprops/action-gh-release@v1
with:
files: ${{ env.main_project_module }}/build/outputs/apk/debug/*.apk
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# آپلود APK Release به Releases
- name: Upload APK Release to Release
uses: softprops/action-gh-release@v1
with:
files: ${{ env.main_project_module }}/build/outputs/apk/release/*.apk
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# آپلود AAB Release به Releases
- name: Upload AAB to Release
uses: softprops/action-gh-release@v1
with:
files: ${{ env.main_project_module }}/build/outputs/bundle/release/*.aab
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}