@@ -18,20 +18,14 @@ jobs:
18
18
permissions :
19
19
contents : write
20
20
pull-requests : write
21
+ security-events : write
21
22
22
23
timeout-minutes : 60
23
24
24
25
steps :
25
26
- name : Checkout
26
27
uses : actions/checkout@v4
27
28
28
- - name : Enable KVM group perms
29
- run : |
30
- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
31
- sudo udevadm control --reload-rules
32
- sudo udevadm trigger --name-match=kvm
33
- ls /dev/kvm
34
-
35
29
- name : Copy CI gradle.properties
36
30
run : mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
37
31
@@ -43,15 +37,11 @@ jobs:
43
37
44
38
- name : Setup Gradle
45
39
uses : gradle/actions/setup-gradle@v4
46
-
47
- - name : Setup Android SDK
48
- uses : android-actions/setup-android@v3
49
-
50
- - name : Accept licenses
51
- run : yes | sdkmanager --licenses || true
40
+ with :
41
+ cache-encryption-key : ${{ secrets.GRADLE_ENCRYPTION_KEY }}
52
42
53
43
- name : Check build-logic
54
- run : ./gradlew check -p build-logic
44
+ run : ./gradlew : build-logic:convention:check
55
45
56
46
- name : Check spotless
57
47
run : ./gradlew spotlessCheck --init-script gradle/init.gradle.kts --no-configuration-cache
93
83
continue-on-error : false
94
84
if : steps.screenshotsverify.outcome == 'failure' && github.event.pull_request.head.repo.full_name != github.repository
95
85
run : |
96
- echo "::error::Screenshot tests failed, please create a PR in your fork first." && exit 1
86
+ echo "::error::Screenshot tests failed, please create a PR in your fork first."
87
+ echo "Your fork's CI will take screenshots for your fork."
88
+ exit 1
97
89
98
90
# Runs if previous job failed
99
91
- name : Generate new screenshots if verification failed and it's a PR
@@ -114,19 +106,8 @@ jobs:
114
106
- name : Run local tests
115
107
run : ./gradlew testDemoDebug :lint:test
116
108
117
- - name : Setup GMD
118
- run : ./gradlew :benchmarks:pixel6Api33Setup
119
- --info
120
- -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true
121
- -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
122
-
123
109
- name : Build all build type and flavor permutations
124
- run : ./gradlew :app:assemble :benchmarks:assemble -Pandroidx.baselineprofile.skipgeneration
125
- -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect"
126
- -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true
127
- -Pandroid.experimental.androidTest.numManagedDeviceShards=1
128
- -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1
129
- -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=5
110
+ run : ./gradlew :app:assemble
130
111
131
112
- name : Upload build outputs (APKs)
132
113
uses : actions/upload-artifact@v4
@@ -135,14 +116,14 @@ jobs:
135
116
path : ' **/build/outputs/apk/**/*.apk'
136
117
137
118
- name : Upload JVM local results (XML)
138
- if : always()
119
+ if : ${{ !cancelled() }}
139
120
uses : actions/upload-artifact@v4
140
121
with :
141
122
name : local-test-results
142
123
path : ' **/build/test-results/test*UnitTest/**.xml'
143
124
144
125
- name : Upload screenshot results (PNG)
145
- if : always()
126
+ if : ${{ !cancelled() }}
146
127
uses : actions/upload-artifact@v4
147
128
with :
148
129
name : screenshot-test-results
@@ -152,12 +133,18 @@ jobs:
152
133
run : ./gradlew :app:lintProdRelease :app-nia-catalog:lintRelease :lint:lint
153
134
154
135
- name : Upload lint reports (HTML)
155
- if : always()
136
+ if : ${{ !cancelled() }}
156
137
uses : actions/upload-artifact@v4
157
138
with :
158
139
name : lint-reports
159
140
path : ' **/build/reports/lint-results-*.html'
160
141
142
+ - name : Upload lint reports (SARIF)
143
+ if : ${{ !cancelled() && hashFiles('**/*.sarif') != '' }}
144
+ uses : github/codeql-action/upload-sarif@v3
145
+ with :
146
+ sarif_file : ' ./'
147
+
161
148
- name : Check badging
162
149
run : ./gradlew :app:checkProdReleaseBadging
163
150
@@ -166,7 +153,7 @@ jobs:
166
153
timeout-minutes : 55
167
154
strategy :
168
155
matrix :
169
- api-level : [26, 30 ]
156
+ api-level : [26, 34 ]
170
157
171
158
steps :
172
159
- name : Delete unnecessary tools 🔧
@@ -202,8 +189,7 @@ jobs:
202
189
- name : Setup Gradle
203
190
uses : gradle/actions/setup-gradle@v4
204
191
with :
205
- validate-wrappers : true
206
- gradle-home-cache-cleanup : true
192
+ cache-encryption-key : ${{ secrets.GRADLE_ENCRYPTION_KEY }}
207
193
208
194
- name : Build projects and run instrumentation tests
209
195
uses : reactivecircus/android-emulator-runner@v2
@@ -226,7 +212,7 @@ jobs:
226
212
run : ./gradlew createDemoDebugCombinedCoverageReport
227
213
228
214
- name : Upload test reports
229
- if : always()
215
+ if : ${{ !cancelled() }}
230
216
uses : actions/upload-artifact@v4
231
217
with :
232
218
name : test-reports-${{ matrix.api-level }}
@@ -235,7 +221,7 @@ jobs:
235
221
- name : Display local test coverage (only API 30)
236
222
if : matrix.api-level == 30
237
223
id : jacoco
238
- uses :
madrapps/[email protected] .0
224
+ uses :
madrapps/[email protected] .1
239
225
with :
240
226
title : Combined test coverage report
241
227
min-coverage-overall : 40
0 commit comments