-
Notifications
You must be signed in to change notification settings - Fork 1
158 lines (130 loc) · 8.09 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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 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: Find APK Release
run: |
echo "Checking for APK release..."
find app/build/outputs/apk -type f -name "*.apk"
- name: Move APK Release to output directory
run: |
APK_PATH=$(find app/build/outputs/apk/release -type f -name "*.apk" | head -n 1)
if [ -z "$APK_PATH" ]; then
echo "No APK release found!"
exit 1
fi
echo "Found APK at: $APK_PATH"
mv "$APK_PATH" app/build/outputs/apk/release/app-release.apk
- name: Verify if Release APK exists
run: |
if [ -f app/build/outputs/apk/release/app-release.apk ]; then
echo "APK Release file found!"
else
echo "APK Release file not found!"
exit 1
fi
- name: Sign APK
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 app/build/outputs/apk/release/app-release-signed.apk app/build/outputs/apk/release/app-release.apk
- name: Verify APK Signature
run: apksigner verify app/build/outputs/apk/release/app-release-signed.apk
- name: Upload APK Debug as Artifact
uses: actions/upload-artifact@v4
with:
name: APK-Debug-${{ env.VERSION }}
path: app/build/outputs/apk/debug/*.apk
- name: Upload APK Release as Artifact
uses: actions/upload-artifact@v4
with:
name: APK-Release-${{ env.VERSION }}
path: app/build/outputs/apk/release/app-release-signed.apk
- name: Upload AAB as Artifact
uses: actions/upload-artifact@v4
with:
name: AAB-Release-${{ env.VERSION }}
path: app/build/outputs/bundle/release/*.aab
- 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 }}
- name: Upload APK Debug to Release
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/apk/debug/*.apk
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload APK Release to Release
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/apk/release/app-release-signed.apk
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload AAB to Release
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/bundle/release/*.aab
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}