-
Notifications
You must be signed in to change notification settings - Fork 23
136 lines (113 loc) · 3.47 KB
/
main.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
name: Build & Ship
on:
pull_request:
merge_group:
jobs:
compose-ui-tests:
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'adopt'
cache: 'gradle'
- 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: Run instrumented tests
uses: ReactiveCircus/android-emulator-runner@v2.32.0
with:
api-level: 29
script: ./gradlew connectedCheck
unit-tests-and-detekt:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Set Java 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Run Detekt
uses: eskatos/gradle-command-action@v3
with:
arguments: detekt
- name: Run Unit Tests
run: ./gradlew test --stacktrace
iOS-build:
runs-on: macos-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build macOS shared code
run: ./gradlew :shared:compileKotlinIosSimulatorArm64
- name: iOS set up
uses: ./.github/actions/ios-action
- name: Build iOS app
run: xcodebuild build -workspace iosApp/iosApp.xcworkspace -configuration Debug -scheme iosApp -sdk iphoneos -destination name='iPhone 14' -verbose
maestro-ui-tests-and-upload-apk:
runs-on: ubuntu-latest
timeout-minutes: 20
outputs:
app: androidApp/build/outputs/apk/debug
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'adopt'
cache: 'gradle'
- run: ./gradlew :androidApp:assembleDebug
- uses: mobile-dev-inc/action-maestro-cloud@v1.9.1
with:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
app-file: androidApp/build/outputs/apk/debug/androidApp-debug.apk
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: apk
path: androidApp/build/outputs/apk/debug/androidApp-debug.apk
desktop-build:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build desktop app
run: ./gradlew :desktop:packageDistributionForCurrentOS
web-build:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build web app
run: ./gradlew :webApp:jsBrowserDevelopmentExecutableDistribution
wasm-build:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build wasm app
run: ./gradlew :wasmApp:wasmBrowserDevelopmentExecutableDistribution