5
5
jobs :
6
6
compose-ui-tests :
7
7
runs-on : ubuntu-latest
8
- timeout-minutes : 25
8
+ timeout-minutes : 60
9
9
10
10
steps :
11
11
- uses : actions/checkout@v4
@@ -23,114 +23,204 @@ jobs:
23
23
sudo udevadm control --reload-rules
24
24
sudo udevadm trigger --name-match=kvm
25
25
26
- - name : Run instrumented tests
26
+ - name : Set up Emulator, Build and Run Tests
27
27
uses : ReactiveCircus/android-emulator-runner@v2.33.0
28
28
with :
29
29
api-level : 29
30
- script : ./gradlew connectedCheck
30
+ script : |
31
+ adb devices
32
+ ./gradlew assembleDebug
33
+ ./gradlew connectedCheck -PtestBuildType=debug --info
34
+
35
+ - name : Retry Tests if Failed
36
+ uses : nick-fields/retry@v2
37
+ if : failure()
38
+ with :
39
+ timeout_minutes : 15
40
+ max_attempts : 2
41
+ command : |
42
+ adb devices
43
+ ./gradlew connectedCheck -PtestBuildType=debug --info
44
+
45
+ - name : Upload Compose UI Test Results
46
+ if : always()
47
+ uses : actions/upload-artifact@v4
48
+ with :
49
+ name : compose-ui-test-results
50
+ path : ' **/build/reports/androidTests/'
31
51
32
52
unit-tests-and-detekt :
33
53
runs-on : ubuntu-latest
34
- timeout-minutes : 10
54
+ timeout-minutes : 45
35
55
36
56
steps :
37
57
- uses : actions/checkout@v4
38
58
39
- - name : Set Java 17
59
+ - name : Set up JDK 17
40
60
uses : actions/setup-java@v4
41
61
with :
42
- distribution : ' temurin'
43
62
java-version : 17
63
+ distribution : ' adopt'
64
+ cache : ' gradle'
44
65
45
66
- name : Run Detekt
46
- uses : eskatos/gradle-command-action@v3
67
+ uses : nick-fields/retry@v2
47
68
with :
48
- arguments : detekt
69
+ timeout_minutes : 15
70
+ max_attempts : 2
71
+ command : ./gradlew detekt
49
72
50
73
- name : Run Unit Tests
51
- run : ./gradlew test --stacktrace
74
+ uses : nick-fields/retry@v2
75
+ with :
76
+ timeout_minutes : 15
77
+ max_attempts : 2
78
+ command : ./gradlew test --stacktrace
79
+
80
+ - name : Upload Unit Test Results
81
+ if : always()
82
+ uses : actions/upload-artifact@v4
83
+ with :
84
+ name : unit-test-results
85
+ path : ' **/build/reports/tests/'
86
+
87
+ - name : Upload Detekt Results
88
+ if : always()
89
+ uses : actions/upload-artifact@v4
90
+ with :
91
+ name : detekt-results
92
+ path : ' **/build/reports/detekt/'
52
93
53
94
iOS-build :
54
95
runs-on : macos-latest
55
- timeout-minutes : 20
96
+ timeout-minutes : 60
56
97
57
98
steps :
58
99
- uses : actions/checkout@v4
59
100
60
- - uses : actions/setup-java@v4
101
+ - name : Set up Java
102
+ uses : actions/setup-java@v4
61
103
with :
62
104
distribution : ' zulu'
63
105
java-version : 17
64
106
65
107
- name : Build macOS shared code
66
- run : ./gradlew :shared:compileKotlinIosSimulatorArm64
108
+ uses : nick-fields/retry@v2
109
+ with :
110
+ timeout_minutes : 20
111
+ max_attempts : 2
112
+ command : ./gradlew :shared:compileKotlinIosSimulatorArm64
67
113
68
114
- name : iOS set up
69
115
uses : ./.github/actions/ios-action
70
116
71
117
- name : Build iOS app
72
- run : xcodebuild build -workspace iosApp/iosApp.xcworkspace -configuration Debug -scheme iosApp -sdk iphoneos -destination name='iPhone 14' -verbose
118
+ uses : nick-fields/retry@v2
119
+ with :
120
+ timeout_minutes : 25
121
+ max_attempts : 2
122
+ command : xcodebuild build -workspace iosApp/iosApp.xcworkspace -configuration Debug -scheme iosApp -sdk iphoneos -destination name='iPhone 14' -verbose
73
123
74
124
maestro-ui-tests-and-upload-apk :
75
125
runs-on : ubuntu-latest
76
- timeout-minutes : 20
126
+ timeout-minutes : 45
77
127
78
128
outputs :
79
129
app : androidApp/build/outputs/apk/debug
80
130
steps :
81
131
- uses : actions/checkout@v4
132
+
82
133
- name : Set up JDK 17
83
134
uses : actions/setup-java@v4
84
135
with :
85
136
java-version : 17
86
137
distribution : ' adopt'
87
138
cache : ' gradle'
88
- - run : ./gradlew :androidApp:assembleDebug
89
- - uses : mobile-dev-inc/action-maestro-cloud@v1.9.2
139
+
140
+ - name : Assemble Debug APK
141
+ uses : nick-fields/retry@v2
142
+ with :
143
+ timeout_minutes : 20
144
+ max_attempts : 2
145
+ command : ./gradlew :androidApp:assembleDebug
146
+
147
+ - name : Run Maestro Tests
148
+ uses : mobile-dev-inc/action-maestro-cloud@v1.9.2
90
149
with :
91
150
api-key : ${{ secrets.MAESTRO_CLOUD_API_KEY }}
92
151
app-file : androidApp/build/outputs/apk/debug/androidApp-debug.apk
152
+
93
153
- name : Upload APK
94
154
uses : actions/upload-artifact@v4
95
155
with :
96
156
name : apk
97
157
path : androidApp/build/outputs/apk/debug/androidApp-debug.apk
98
158
159
+ - name : Upload Maestro Test Results
160
+ if : always()
161
+ uses : actions/upload-artifact@v4
162
+ with :
163
+ name : maestro-test-results
164
+ path : |
165
+ ${{ github.workspace }}/report*.xml
166
+ ~/.maestro/tests/**/*
167
+
99
168
desktop-build :
100
169
runs-on : ubuntu-latest
101
- timeout-minutes : 20
170
+ timeout-minutes : 45
102
171
103
172
steps :
104
173
- uses : actions/checkout@v4
105
- - uses : actions/setup-java@v4
174
+
175
+ - name : Set up Java
176
+ uses : actions/setup-java@v4
106
177
with :
107
178
distribution : ' zulu'
108
179
java-version : 17
180
+
109
181
- name : Build desktop app
110
- run : ./gradlew :desktop:packageDistributionForCurrentOS
182
+ uses : nick-fields/retry@v2
183
+ with :
184
+ timeout_minutes : 20
185
+ max_attempts : 2
186
+ command : ./gradlew :desktop:packageDistributionForCurrentOS
111
187
112
188
web-build :
113
189
runs-on : ubuntu-latest
114
- timeout-minutes : 20
190
+ timeout-minutes : 45
115
191
116
192
steps :
117
193
- uses : actions/checkout@v4
118
- - uses : actions/setup-java@v4
194
+
195
+ - name : Set up Java
196
+ uses : actions/setup-java@v4
119
197
with :
120
198
distribution : ' zulu'
121
199
java-version : 17
200
+
122
201
- name : Build web app
123
- run : ./gradlew :webApp:jsBrowserDevelopmentExecutableDistribution
202
+ uses : nick-fields/retry@v2
203
+ with :
204
+ timeout_minutes : 20
205
+ max_attempts : 2
206
+ command : ./gradlew :webApp:jsBrowserDevelopmentExecutableDistribution
124
207
125
208
wasm-build :
126
209
runs-on : ubuntu-latest
127
- timeout-minutes : 20
210
+ timeout-minutes : 45
128
211
129
212
steps :
130
213
- uses : actions/checkout@v4
131
- - uses : actions/setup-java@v4
214
+
215
+ - name : Set up Java
216
+ uses : actions/setup-java@v4
132
217
with :
133
218
distribution : ' zulu'
134
219
java-version : 17
220
+
135
221
- name : Build wasm app
136
- run : ./gradlew :wasmApp:wasmBrowserDevelopmentExecutableDistribution
222
+ uses : nick-fields/retry@v2
223
+ with :
224
+ timeout_minutes : 20
225
+ max_attempts : 2
226
+ command : ./gradlew :wasmApp:wasmBrowserDevelopmentExecutableDistribution
0 commit comments