-
Notifications
You must be signed in to change notification settings - Fork 0
191 lines (160 loc) · 7.33 KB
/
publish-update.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
name: Publish update
on:
push:
branches: "release"
env:
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
RELEASE_SIGN_KEY_ALIAS: ${{ secrets.RELEASE_SIGN_KEY_ALIAS }}
RELEASE_SIGN_KEY_PASSWORD: ${{ secrets.RELEASE_SIGN_KEY_PASSWORD }}
jobs:
build-apk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: release
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Create google-services.json
run: cat /home/runner/work/che-zadali-app/che-zadali-app/app/google-services.json | base64
- name: Putting data into google-services.json
env:
DATA: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: echo $DATA > /home/runner/work/che-zadali-app/che-zadali-app/app/google-services.json
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.KEYSTORE_FILE }}
run: |
TMP_KEYSTORE_FILE_PATH=/home/runner/work/che-zadali-app/che-zadali-app/app/keystore
mkdir "${TMP_KEYSTORE_FILE_PATH}"
echo $ENCODED_STRING | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"/mezhendosina_key.jks
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew assembleRelease --stacktrace
- name: Get built APK
uses: actions/upload-artifact@v3
with:
name: SGO app.apk
path: /home/runner/work/che-zadali-app/che-zadali-app/app/build/outputs/apk/release/app-release.apk
get-apk-version:
needs: build-apk
runs-on: ubuntu-latest
outputs:
apk-version-name: ${{ steps.apk-info.outputs.version-name }}
steps:
- name: Get APK
uses: actions/download-artifact@v3
with:
name: SGO app.apk
path: ./
- name: Get apk info
id: apk-info
uses: mezhendosina/apk-info-action@0.0.1
with:
apk-path: /home/runner/work/che-zadali-app/che-zadali-app/app-release.apk
prepare-release-notes:
needs: get-apk-version
runs-on: ubuntu-latest
outputs:
release-notes-with-header: "*Доступна новая версия приложения*: _${{ needs.get-apk-version.outputs.apk-version-name }}_
${{ env.release }}"
release-notes: "${{ env.release }}"
steps:
- uses: actions/checkout@v3
with:
ref: release
- name: Read RELEASE.md file
id: getRelease
run: |
echo "release<<EOF" >> $GITHUB_ENV
echo -e $(cat /home/runner/work/che-zadali-app/che-zadali-app/RELEASE_NOTES.md) >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
get-last-release-version:
needs: get-apk-version
runs-on: ubuntu-latest
outputs:
is-update: ${{ steps.check-release-tag.outputs.is_update }}
steps:
- name: Fetch Latest Release
id: fetch-latest-release
uses: gregziegan/fetch-latest-release@v2.0.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get release tag
id: get-release-tag
run: echo last_tag=${{ steps.fetch-latest-release.outputs.tag_name }} << $GITHUB_OUTPUT
- name: Check release tag
id: check-release-tag
run: echo is_update=${{ steps.get-release-tag.outputs.last_tag }} != ${{ needs.get-apk-version.outputs.apk-version-name }} << $GITHUB_OUTPUT
send-to-rustore:
needs: [ prepare-release-notes, get-apk-version ]
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Get APK
uses: actions/download-artifact@v3
with:
name: SGO app.apk
path: ./
- name: rename APK
run: mv /home/runner/work/che-zadali-app/che-zadali-app/app-release.apk /home/runner/work/che-zadali-app/che-zadali-app/che-zadali-app-v${{ needs.get-apk-version.outputs.apk-version-name }}.apk
- name: Create RuStore update
run: curl -H "Public-Token:${{ secrets.RUSTORE_API_KEY }}" -H "Content-Type:application/json" --data-raw "{\"whatsNew\":${{ needs.prepare-release-notes.outputs.release-notes }}, \"publishType\":\"INSTANTLY\"}" https://public-api.rustore.ru/public/v1/application/com.mezhendosina.sgo.app/version | python -c "import sys, json; open('/output', 'w').write(json.load(sys.stdin)['body']))"
- name: Upload File
run: curl -H "Public-Token:${{ secrets.RUSTORE_API_KEY }}" -F file=@"/home/runner/work/che-zadali-app/che-zadali-app/che-zadali-app-v${{ needs.get-apk-version.outputs.apk-version-name }}.apk" https://public-api.rustore.ru/public/v1/application/com.mezhendosina.sgo.app/version/$(cat ./output)/apk?isMainAPK=true
- name: Send to moderation
run: curl -H "Public-Token:${{ secrets.RUSTORE_API_KEY }}" https://public-api.rustore.ru/public/v1/application/com.mezhendosina.sgo.app/version/$(cat ./output)/commit?priority=3
send-to-channel:
needs: [ prepare-release-notes, get-apk-version ]
# if: ${{ needs.get-last-release-version.outputs.is-update }}
runs-on: ubuntu-latest
steps:
- name: Get APK
uses: actions/download-artifact@v3
with:
name: SGO app.apk
path: ./
- name: rename APK
run: mv /home/runner/work/che-zadali-app/che-zadali-app/app-release.apk /home/runner/work/che-zadali-app/che-zadali-app/che-zadali-app-v${{ needs.get-apk-version.outputs.apk-version-name }}.apk
- name: Send release notes to Telegram channel
run: curl -F chat_id=-1001621609379 -F parse_mode=Markdown -F text="${{ needs.prepare-release-notes.outputs.release-notes-with-header }}" https://api.telegram.org/bot${{ secrets.TELEGRAM_API_TOKEN }}/sendMessage
- name: Send file to Telegram channel
run: curl -F document=@"/home/runner/work/che-zadali-app/che-zadali-app/che-zadali-app-v${{ needs.get-apk-version.outputs.apk-version-name }}.apk" https://api.telegram.org/bot${{ secrets.TELEGRAM_API_TOKEN }}/sendDocument?chat_id=-1001621609379
create-release:
needs: [ prepare-release-notes, get-apk-version ]
# if: ${{ needs.get-last-release-version.outputs.is-update }}
runs-on: ubuntu-latest
steps:
- name: Get APK
uses: actions/download-artifact@v3
with:
name: SGO app.apk
path: ./
- name: rename APK
run: mv /home/runner/work/che-zadali-app/che-zadali-app/app-release.apk /home/runner/work/che-zadali-app/che-zadali-app/che-zadali-app.apk
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.get-apk-version.outputs.apk-version-name }}
release_name: ${{ needs.get-apk-version.outputs.apk-version-name }}
body: ${{ needs.prepare-release-notes.outputs.release-notes }}
- name: Upload APK
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /home/runner/work/che-zadali-app/che-zadali-app/che-zadali-app.apk
asset_name: che-zadali-app.apk
asset_content_type: application/vnd.android.package-archive