-
-
Notifications
You must be signed in to change notification settings - Fork 69
146 lines (129 loc) · 4.83 KB
/
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
name: Release Build
on:
push:
tags:
- 'v*'
pull_request:
branches: [ "main" ]
jobs:
Build:
name: Build/Sign APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set GOOGLE_API_KEY in local properties
run: echo 'GOOGLE_API_KEY="${{ secrets.GOOGLE_API_KEY }}"' >> ./local.properties
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Set ANDROID_HOME
run: echo "ANDROID_HOME=$ANDROID_SDK_ROOT" >> $GITHUB_ENV
- name: Get Tag
id: var
run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
- name: Build APK
id: build
run: bash ./gradlew assembleRelease
- name: Sign APK
id: sign_apk
shell: bash
run: |
# Find the APK file with vX.X.X pattern
APK_FILE=$(find app/build/outputs/apk/release -name "Myne-v*.apk" | head -n 1)
if [ -z "$APK_FILE" ]; then
echo "No APK file found matching the pattern Myne-v*.apk"
echo "Contents of app/build/outputs/apk/release:"
ls -l app/build/outputs/apk/release/
exit 1
fi
echo "Found APK file: $APK_FILE"
SIGNED_APK_FILE=app/build/outputs/apk/release/app-release-signed.apk
echo "${{ secrets.BASE64KEY }}" | base64 --decode > /tmp/signingkey.jks
apksigner=${ANDROID_HOME}/build-tools/$(ls ${ANDROID_HOME}/build-tools/ | tail -1)/apksigner
$apksigner sign \
--ks /tmp/signingkey.jks \
--ks-key-alias ${{ secrets.ALIAS }} \
--ks-pass pass:${{ secrets.KEY_STORE_PASSWORD }} \
--key-pass pass:${{ secrets.KEY_PASSWORD }} \
--out $SIGNED_APK_FILE \
--alignment-preserved true \
$APK_FILE
env:
ANDROID_HOME: ${{ env.ANDROID_HOME }}
- name: Make artifact
uses: actions/upload-artifact@v2
with:
name: Signed APP APK
path: app/build/outputs/apk/release/app-release-signed.apk
- name: Build AAB
run: bash ./gradlew bundleRelease
- name: Sign AAB
id: sign_aab
shell: bash
run: |
# find aab file
AAB_FILE=$(find app/build/outputs/bundle -name "*.aab" | head -n 1)
if [ -z "$AAB_FILE" ]; then
echo "No AAB file found"
echo "Contents of app/build/outputs/bundle"
ls -l app/build/outputs/bundle
exit 1
fi
echo "Found AAB file: $AAB_FILE"
SIGNED_AAB_FILE=app/build/outputs/bundle/release/app-release-signed.aab
echo "${{ secrets.BASE64KEY }}" | base64 --decode > /tmp/signingkey.jks
apksigner=${ANDROID_HOME}/build-tools/$(ls ${ANDROID_HOME}/build-tools/ | tail -1)/apksigner
$apksigner sign \
--ks /tmp/signingkey.jks \
--ks-key-alias ${{ secrets.ALIAS }} \
--ks-pass pass:${{ secrets.KEY_STORE_PASSWORD }} \
--key-pass pass:${{ secrets.KEY_PASSWORD }} \
--out $SIGNED_AAB_FILE \
--alignment-preserved true \
$AAB_FILE
env:
ANDROID_HOME: ${{ env.ANDROID_HOME }}
- name: Make artifact
uses: actions/upload-artifact@v2
with:
name: Signed APP Bundle
path: app/build/outputs/bundle/release/app-release-signed.aab
- name: Build Changelog
id: changelog
uses: ardalanamini/auto-changelog@v3
with:
mention-authors: false
mention-new-contributors: true
include-compare: true
semver: false
- name: Create Release
id: create_release
uses: actions/create-release@v1
with:
tag_name: ${{ github.ref }}
release_name: Myne ${{ github.ref }}
draft: true
body: ${{ steps.changelog.outputs.changelog }}  
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload APK
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/release/app-release-signed.apk
asset_name: Myne-${{ steps.var.outputs.tag }}.apk
asset_content_type: application/zip
- name: Upload AAB
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/bundle/release/app-release-signed.aab
asset_name: Myne-${{ steps.var.outputs.tag }}.aab
asset_content_type: application/zip