-
-
Notifications
You must be signed in to change notification settings - Fork 7
180 lines (156 loc) · 5.49 KB
/
create_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
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow uses perl regex. For better syntaxis understading see these docs:
# https://perldoc.perl.org/perlrequick#Search-and-replace
# https://perldoc.perl.org/perlre#Other-Modifiers
name: Create new release
run-name: Release v${{ inputs.version }}
on:
workflow_dispatch:
inputs:
version:
description: "Version"
required: true
type: string
run-integration-tests:
description: "Run integration tests"
required: true
type: boolean
default: true
jobs:
run-integration-tests:
name: Run integration tests
if: ${{ inputs.run-integration-tests }}
uses: ./.github/workflows/run_integration_tests.yml
secrets: inherit
build-android:
name: Build Android
needs: [run-integration-tests]
if: ${{ always() && !failure() && !cancelled() }}
strategy:
matrix:
binary-type: [apk, appbundle]
uses: ./.github/workflows/build_apk.yml
secrets: inherit
with:
binary-type: ${{ matrix.binary-type }}
flavor: prod
stage-backend: false
version: ${{ inputs.version }}
build-ios:
name: Build iOS
needs: [run-integration-tests]
if: ${{ always() && !failure() && !cancelled() }}
uses: ./.github/workflows/build_ipa.yml
secrets: inherit
with:
stage-backend: false
version: ${{ inputs.version }}
create-github-release:
name: Create Github release
needs: [build-android, build-ios]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Increment build number & replace version number
run: bash ./.github/scripts/increment_build_number.sh ${{ github.event.inputs.version }}
- name: Commit changes
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add -A
git commit -m "Release v${{ inputs.version }}"
- name: Push to main
uses: CasperWA/push-protected@v2
with:
token: ${{ secrets.PUSH_TO_MAIN_TOKEN }}
branch: ${{ github.ref_name }}
unprotect_reviews: true
- name: Download apk
uses: actions/download-artifact@v3
with:
name: m3_lightmeter_apk
- name: Rename apk
run: mv app-prod-release.apk m3_lightmeter.apk
- uses: ncipollo/release-action@v1.12.0
with:
artifacts: "m3_lightmeter.apk"
skipIfReleaseExists: true
tag: "v${{ github.event.inputs.version }}"
bodyFile: "assets/release_notes/release_notes_en_${{ inputs.version }}.md"
create-google-play-release:
name: Create Google Play release
needs: [build-android, build-ios]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download app bundle
uses: actions/download-artifact@v3
with:
name: m3_lightmeter_appbundle
- name: Extract & zip merged_native_libs
run: |
unzip app-prod-release.aab
(cd base/lib && zip -r "$OLDPWD/merged_native_libs.zip" .)
- name: Move release notes to a folder
run: |
mv assets/release_notes/release_notes_en_${{ inputs.version }}.md whatsnew-en-US
mkdir whatsnew
mv whatsnew-en-US whatsnew
# https://unix.stackexchange.com/questions/13466/can-grep-output-only-specified-groupings-that-match'
# https://stackoverflow.com/questions/74353311/github-workflow-unable-to-process-file-command-env-successfully
- name: Create Google Play release name
id: release-name
run: |
RELEASE_NAME=$(echo "$(cat pubspec.yaml)" | sed -n -r "s/^version:\s{1}(.*)[+](.*)$/700\2 (\1)/p")
echo "release_name=$RELEASE_NAME" >> $GITHUB_ENV
- name: Create Google Play release
id: create-google-play-release-step
uses: r0adkll/upload-google-play@v1.1.1
with:
serviceAccountJsonPlainText: ${{ secrets.GH_ACTIONS_SERVICE_ACCOUNT_JSON }}
packageName: com.vodemn.lightmeter
releaseFiles: app-prod-release.aab
releaseName: ${{ env.release_name }}
track: production
status: completed
debugSymbols: merged_native_libs.zip
whatsNewDirectory: whatsnew
upload-to-app-store:
name: Upload to App Store
needs: [build-android, build-ios]
runs-on: macos-13
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download ipa
uses: actions/download-artifact@v3
with:
name: m3_lightmeter_ipa
- name: Upload app to TestFlight
run: xcrun altool --upload-app -f lightmeter.ipa -t ios -u ${{ secrets.APP_STORE_USERNAME }} -p ${{ secrets.APP_STORE_PASSWORD }}
cleanup:
name: Cleanup
if: ${{ always() }}
needs:
[create-github-release, create-google-play-release, upload-to-app-store]
runs-on: ubuntu-latest
steps:
- name: Delete release artifacts
uses: geekyeggo/delete-artifact@v2
with:
failOnError: false
name: |
m3_lightmeter_apk
m3_lightmeter_appbundle
m3_lightmeter_ipa
whatsnew-en-US