-
Notifications
You must be signed in to change notification settings - Fork 8
221 lines (194 loc) · 8.57 KB
/
Copy pathnightly.yaml
File metadata and controls
221 lines (194 loc) · 8.57 KB
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
name: Nightly build and test
env:
# The name of the main module repository
main_project_module: app
# The name in the Play Store
playstore_name: Soundscape
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Schedule the build for 05.30 UTC
schedule:
- cron: '30 5 * * *'
jobs:
build:
name: Build package (${{ matrix.ref }})
runs-on: ubuntu-latest
environment: development
permissions:
contents: write
strategy:
fail-fast: false
matrix:
ref: [main, v1.0, multiplatform]
steps:
- uses: actions/checkout@v6
with:
ref: ${{ matrix.ref }}
fetch-depth: 0
- name: Setup offline maps for tests
run: |
pwd
wget --no-verbose --show-progress --progress=dot:giga https://pub-0a3501283b024ab3bbfbb6d1e217f5d0.r2.dev/street-metadata/bristol-gb.pmtiles -O ${{ env.main_project_module }}/src/test/res/org/scottishtecharmy/soundscape/bristol-gb.pmtiles
wget --no-verbose --show-progress --progress=dot:giga https://pub-0a3501283b024ab3bbfbb6d1e217f5d0.r2.dev/street-metadata/glasgow-gb.pmtiles -O ${{ env.main_project_module }}/src/test/res/org/scottishtecharmy/soundscape/glasgow-gb.pmtiles
wget --no-verbose --show-progress --progress=dot:giga https://pub-0a3501283b024ab3bbfbb6d1e217f5d0.r2.dev/street-metadata/liverpool-gb.pmtiles -O ${{ env.main_project_module }}/src/test/res/org/scottishtecharmy/soundscape/liverpool-gb.pmtiles
wget --no-verbose --show-progress --progress=dot:giga https://pub-0a3501283b024ab3bbfbb6d1e217f5d0.r2.dev/manifest.geojson.gz -O ${{ env.main_project_module }}/src/test/res/org/scottishtecharmy/soundscape/manifest.geojson.gz
- name: Setup tile and search providers
env:
TILE_PROVIDER_API_KEY: ${{ secrets.TILE_PROVIDER_API_KEY }}
TILE_PROVIDER_URL: ${{ secrets.TILE_PROVIDER_URL }}
SEARCH_PROVIDER_API_KEY: ${{ secrets.SEARCH_PROVIDER_API_KEY }}
SEARCH_PROVIDER_URL: ${{ secrets.SEARCH_PROVIDER_URL }}
EXTRACT_PROVIDER_URL: ${{ secrets.EXTRACT_PROVIDER_URL }}
run: |
echo tileProviderUrl="$TILE_PROVIDER_URL" > local.properties
echo tileProviderApiKey="$TILE_PROVIDER_API_KEY" >> local.properties
echo searchProviderUrl="$SEARCH_PROVIDER_URL" >> local.properties
echo searchProviderApiKey="$SEARCH_PROVIDER_API_KEY" >> local.properties
echo extractProviderUrl="$EXTRACT_PROVIDER_URL" >> local.properties
- name: Decode Google services
env:
ENCODED_STRING: ${{ secrets.GOOGLE_SERVICES }}
GOOGLE_SERVICES_PATH: ${{ secrets.GOOGLE_SERVICES_PATH }}
run: |
echo $ENCODED_STRING > google-services-b64.txt
base64 -d google-services-b64.txt > ${{ env.main_project_module }}/$GOOGLE_SERVICES_PATH
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Set Up JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '19'
- name: Run lint over the repo
run: ./gradlew lint
# Run Tests Build
- name: Run gradle tests
run: ./gradlew test
# Setup release build keys
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.SIGNING_KEY_STORE_BASE64 }}
SIGNING_KEY_STORE_PATH: ${{ secrets.SIGNING_KEY_STORE_PATH }}
run: |
echo $ENCODED_STRING > keystore-b64.txt
base64 -d keystore-b64.txt > ${{ env.main_project_module }}/$SIGNING_KEY_STORE_PATH
# Create APK Release
- name: Build apk project (APK)
env:
SIGNING_KEY_STORE_PATH: ${{ secrets.SIGNING_KEY_STORE_PATH }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
run: |
./gradlew assemble
# Upload Artifact Build
# Noted For Output [main_project_module]/build/outputs/apk/release/
- name: Upload APK Release
uses: actions/upload-artifact@v6
with:
name: release-apk-${{ matrix.ref }}
path: ${{ env.main_project_module }}/build/outputs/apk/releaseTest/
# Generate android instrumentation tests APK
# - name: Assemble Android Instrumentation Tests
# env:
# SIGNING_KEY_STORE_PATH: ${{ secrets.SIGNING_KEY_STORE_PATH }}
# SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
# SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
# SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
# run: ./gradlew assembleAndroidTest -DtestBuildType=debug
# - name: Upload Android Test APK
# uses: actions/upload-artifact@v6
# with:
# name: release-androidTest
# path: ${{ env.main_project_module }}/build/outputs/apk/androidTest/debug/app-release-androidTest.apk
# instrumentation-tests:
# name: Run matrix of instrumentation tests
# needs: build
# environment: development
# runs-on: ubuntu-latest
# strategy:
# matrix:
# api-level: [30, 31, 34]
# fail-fast: false
# steps:
# - uses: actions/checkout@v6
# with:
# fetch-depth: 0
#
# - name: Setup tile provider
# env:
# TILE_PROVIDER_API_KEY: ${{ secrets.TILE_PROVIDER_API_KEY }}
# TILE_PROVIDER_URL: ${{ secrets.TILE_PROVIDER_URL }}
# run: |
# echo tileProviderUrl=$TILE_PROVIDER_URL > local.properties
# echo tileProviderApiKey=$TILE_PROVIDER_API_KEY >> local.properties
#
# - name: Decode Google services
# env:
# ENCODED_STRING: ${{ secrets.GOOGLE_SERVICES }}
# GOOGLE_SERVICES_PATH: ${{ secrets.GOOGLE_SERVICES_PATH }}
#
# run: |
# echo $ENCODED_STRING > google-services-b64.txt
# base64 -d google-services-b64.txt > ${{ env.main_project_module }}/$GOOGLE_SERVICES_PATH
#
# - name: Setup Gradle
# uses: gradle/actions/setup-gradle@v5
#
# - name: Set Up JDK
# uses: actions/setup-java@v5
# with:
# distribution: 'zulu' # See 'Supported distributions' for available options
# java-version: '19'
#
# - name: Enable KVM
# run: |
# echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
# sudo udevadm control --reload-rules
# sudo udevadm trigger --name-match=kvm
#
# - name: Instrumentation Tests
# id: instrumentation-tests
# uses: reactivecircus/android-emulator-runner@v2
# with:
# api-level: ${{ matrix.api-level }}
# target: default
# arch: x86_64
# script: |
# adb logcat -c # clear logs
# touch app/emulator.log # create log file
# chmod 777 app/emulator.log # allow writing to log file
# adb logcat >> app/emulator.log & # pipe all logcat messages into log file as a background process
# ./gradlew connectedCheck
firebase:
name: Run UI tests with Firebase Test Lab (${{ matrix.ref }})
needs: build
environment: development
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ref: [main, v1.0, multiplatform]
steps:
- name: Download app APK
uses: actions/download-artifact@v8
with:
name: release-apk-${{ matrix.ref }}
# - name: Download Android test APK
# uses: actions/download-artifact@v8
# with:
# name: release-androidTest
- name: Auth
uses: google-github-actions/auth@v3
with:
credentials_json: ${{ secrets.GCLOUD_CREDENTIALS_JSON }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v3
- name: Set current project
run: gcloud config set project ${{ secrets.FIREBASE_PROJECT_ID }}
# These tests now need the pmtiles file, skip for now as we already test locally
# - name: Run Instrumentation Tests in Firebase Test Lab
# run: gcloud firebase test android run --type instrumentation --use-orchestrator --app app-release.apk --test app-release-androidTest.apk --device model=shiba,version=34,locale=en,orientation=portrait
- name: Run Robo test in Firebase Test Lab
run: gcloud firebase test android run --type robo --app=app-releaseTest.apk --timeout=1800s --device model=shiba,version=34,locale=en,orientation=portrait