Skip to content

Commit 3feaa5b

Browse files
authored
Merge pull request #21 from kez-lab/feature/build-test
feat: Add CI configuration for building and testing CMP
2 parents 33afdc4 + c26a280 commit 3feaa5b

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
name: CI - Compose Multiplatform TimePicker (Build & Test)
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
permissions:
14+
contents: read
15+
16+
env:
17+
MODULE: ":datetimepicker"
18+
jobs:
19+
20+
linux-builds:
21+
name: Linux • ${{ matrix.target }}
22+
runs-on: ubuntu-latest
23+
timeout-minutes: 15
24+
strategy:
25+
fail-fast: false
26+
matrix:
27+
target: [ android, wasm, desktop ]
28+
steps:
29+
- uses: actions/checkout@v4
30+
31+
- uses: gradle/wrapper-validation-action@v2
32+
33+
- name: Set up JDK 17
34+
uses: actions/setup-java@v4
35+
with:
36+
java-version: '17'
37+
distribution: 'temurin'
38+
cache: 'gradle'
39+
40+
# Android Set Up
41+
- name: Set up Android SDK
42+
if: matrix.target == 'android'
43+
uses: android-actions/setup-android@v3
44+
45+
- name: Install Android build tools
46+
if: matrix.target == 'android'
47+
run: |
48+
sdkmanager "platform-tools" \
49+
"platforms;android-34" \
50+
"build-tools;34.0.0" || true
51+
yes | sdkmanager --licenses || true
52+
53+
# Android Build/Unit Test
54+
- name: Gradle Build • Android
55+
if: matrix.target == 'android'
56+
uses: gradle/gradle-build-action@v3
57+
with:
58+
arguments: |
59+
${{ env.MODULE }}:clean
60+
${{ env.MODULE }}:assembleRelease
61+
${{ env.MODULE }}:testReleaseUnitTest
62+
63+
# Web(WASM) Build/Test
64+
- name: Gradle Build • Web (WASM)
65+
if: matrix.target == 'wasm'
66+
uses: gradle/gradle-build-action@v3
67+
with:
68+
arguments: |
69+
${{ env.MODULE }}:clean
70+
${{ env.MODULE }}:wasmJsBrowserDistribution
71+
${{ env.MODULE }}:wasmJsTest
72+
73+
# Desktop(JVM) Build/Test
74+
- name: Gradle Build • Desktop (JVM)
75+
if: matrix.target == 'desktop'
76+
uses: gradle/gradle-build-action@v3
77+
with:
78+
arguments: |
79+
${{ env.MODULE }}:clean
80+
${{ env.MODULE }}:desktopJar
81+
${{ env.MODULE }}:desktopTest
82+
83+
ios-build-and-test:
84+
name: macOS • iOS Simulator Test
85+
runs-on: macos-14
86+
timeout-minutes: 15
87+
steps:
88+
- uses: actions/checkout@v4
89+
90+
- uses: gradle/wrapper-validation-action@v2
91+
92+
- name: Set up JDK 17
93+
uses: actions/setup-java@v4
94+
with:
95+
java-version: '17'
96+
distribution: 'temurin'
97+
cache: 'gradle'
98+
99+
- name: Boot iOS Simulator (iPhone 15)
100+
run: |
101+
LATEST_IOS=$(xcrun simctl list runtimes | grep "iOS" | tail -n 1 | sed -E 's/.*iOS ([0-9]+\.[0-9]+).*/iOS \1/')
102+
echo "Using iOS runtime: $LATEST_IOS"
103+
xcrun simctl create "CI-iPhone15" "iPhone 15" "$LATEST_IOS" || true
104+
xcrun simctl boot "CI-iPhone15" || true
105+
xcrun simctl list | head -n 50
106+
107+
# iOS Simulator Unit Test
108+
- name: Gradle Build & Test • iOS
109+
uses: gradle/gradle-build-action@v3
110+
with:
111+
arguments: |
112+
${{ env.MODULE }}:clean
113+
${{ env.MODULE }}:iosSimulatorArm64Test

0 commit comments

Comments
 (0)