Skip to content

Commit df07bf9

Browse files
committed
Parallelize CI for multi-module setup
1 parent 0a4d1b4 commit df07bf9

3 files changed

Lines changed: 98 additions & 55 deletions

File tree

.github/workflows/ci.yml

Lines changed: 77 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,37 @@ permissions:
99
contents: read
1010

1111
jobs:
12+
setup:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
core_modules: ${{ steps.generate.outputs.core_modules }}
16+
steps:
17+
- uses: actions/checkout@v5
18+
- name: Generate module list
19+
id: generate
20+
run: |
21+
all_modules=$(grep '^include(":' settings.gradle.kts | sed 's/include("://' | sed 's/")//' | jq -R . | jq -s -c .)
22+
core_modules=$(echo "$all_modules" | jq -c '[.[] | select((startswith("demo") | not) and . != "playground-android")]')
23+
echo "core_modules=$core_modules" >> $GITHUB_OUTPUT
24+
1225
build:
26+
needs: setup
27+
strategy:
28+
max-parallel: 6
29+
fail-fast: false
30+
matrix:
31+
module: ${{ fromJson(needs.setup.outputs.core_modules) }}
1332
runs-on: ubuntu-latest
1433
steps:
15-
- uses: actions/checkout@v4
16-
- uses: gradle/actions/wrapper-validation@v3
17-
- uses: actions/setup-java@v4
34+
- uses: actions/checkout@v5
35+
- uses: gradle/actions/wrapper-validation@v5
36+
- uses: actions/setup-java@v5
1837
with:
1938
distribution: temurin
2039
java-version: 17
40+
token: ${{ github.token }}
2141

22-
- uses: actions/cache@v4
42+
- uses: actions/cache@v5
2343
with:
2444
path: |
2545
~/.gradle/caches
@@ -28,37 +48,57 @@ jobs:
2848
restore-keys: |
2949
gradle-${{ runner.os }}-
3050
31-
- name: Compile
32-
run: ./gradlew --no-daemon --console=plain assemble
33-
34-
- name: Spotless
35-
run: ./gradlew --no-daemon --console=plain spotlessCheck --info
51+
- name: Assemble (${{ matrix.module }})
52+
run: |
53+
./gradlew --console=plain :${{ matrix.module }}:assemble
3654
3755
- name: Upload build artifacts
38-
uses: actions/upload-artifact@v4
56+
uses: actions/upload-artifact@v6
3957
with:
40-
name: build-outputs
58+
name: build-outputs-core-${{ matrix.module }}
4159
path: |
42-
**/build/classes
43-
**/build/libs
44-
**/build/generated
45-
**/build/kotlin
60+
${{ matrix.module }}/build/classes
61+
${{ matrix.module }}/build/libs
62+
${{ matrix.module }}/build/generated
63+
${{ matrix.module }}/build/kotlin
4664
retention-days: 1
4765

66+
code-style-check:
67+
name: Check code style
68+
runs-on: ubuntu-latest
69+
steps:
70+
- uses: actions/checkout@v5
71+
- uses: gradle/actions/wrapper-validation@v5
72+
- uses: actions/setup-java@v5
73+
with:
74+
distribution: temurin
75+
java-version: 17
76+
token: ${{ github.token }}
77+
78+
- uses: actions/cache@v5
79+
with:
80+
path: |
81+
~/.gradle/caches
82+
~/.gradle/wrapper
83+
key: gradle-${{ runner.os }}-${{ hashFiles('**/gradle-wrapper.properties', '**/*.gradle*', '**/gradle.properties') }}
84+
restore-keys: |
85+
gradle-${{ runner.os }}-
86+
87+
- name: Verify Code Style
88+
run: ./gradlew --console=plain spotlessCheck
89+
4890
desktop-tests:
4991
needs: build
50-
strategy:
51-
matrix:
52-
os: [ ubuntu-latest, macos-latest, windows-latest ]
53-
runs-on: ${{ matrix.os }}
92+
runs-on: ubuntu-latest
5493
steps:
55-
- uses: actions/checkout@v4
56-
- uses: actions/setup-java@v4
94+
- uses: actions/checkout@v5
95+
- uses: actions/setup-java@v5
5796
with:
5897
distribution: temurin
59-
java-version: 21
98+
java-version: 17
99+
token: ${{ github.token }}
60100

61-
- uses: actions/cache@v4
101+
- uses: actions/cache@v5
62102
with:
63103
path: |
64104
~/.gradle/caches
@@ -68,12 +108,13 @@ jobs:
68108
gradle-${{ runner.os }}-
69109
70110
- name: Download build artifacts
71-
uses: actions/download-artifact@v4
111+
uses: actions/download-artifact@v7
72112
with:
73-
name: build-outputs
113+
pattern: build-outputs-core-*
114+
merge-multiple: true
74115

75116
- name: Desktop Tests
76-
run: ./gradlew --no-daemon --console=plain jvmTest
117+
run: ./gradlew --console=plain jvmTest
77118

78119
android-tests:
79120
needs: build
@@ -93,29 +134,31 @@ jobs:
93134
sudo udevadm control --reload-rules
94135
sudo udevadm trigger --name-match=kvm
95136
96-
- uses: actions/setup-java@v4
137+
- uses: actions/setup-java@v5
97138
with:
98139
distribution: temurin
99-
java-version: 21
140+
java-version: 17
141+
token: ${{ github.token }}
100142

101143
- name: Gradle cache
102-
uses: gradle/actions/setup-gradle@v4
144+
uses: gradle/actions/setup-gradle@v5
103145

104146
- name: Restore AVD
105-
uses: actions/cache@v4
147+
uses: actions/cache@v5
106148
id: avd-cache
107149
with:
108150
path: |
109151
~/.android/avd/*
110152
~/.android/adb*
111153
key: avd-${{ env.API_LEVEL }}-${{ env.ARCH }}-${{ env.DISK_SIZE }}
112154

113-
- uses: actions/checkout@v4
155+
- uses: actions/checkout@v5
114156

115157
- name: Download build artifacts
116-
uses: actions/download-artifact@v4
158+
uses: actions/download-artifact@v7
117159
with:
118-
name: build-outputs
160+
pattern: build-outputs-core-*
161+
merge-multiple: true
119162

120163
- name: Create AVD
121164
if: steps.avd-cache.outputs.cache-hit != 'true'
@@ -138,4 +181,4 @@ jobs:
138181
force-avd-creation: false
139182
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
140183
disable-animations: true
141-
script: ./gradlew composeunstyled-${{ matrix.module }}:connectedDebugAndroidTest
184+
script: ./gradlew --console=plain composeunstyled-${{ matrix.module }}:connectedDebugAndroidTest

.github/workflows/prepare-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
prepare:
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v4
16+
- uses: actions/checkout@v5
1717
with:
1818
fetch-depth: 0
1919
token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/release.yml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ jobs:
1111
build:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v4
14+
- uses: actions/checkout@v5
1515
with:
1616
ref: ${{ github.event.release.tag_name }}
17-
- uses: gradle/actions/wrapper-validation@v3
18-
- uses: actions/setup-java@v4
17+
- uses: gradle/actions/wrapper-validation@v5
18+
- uses: actions/setup-java@v5
1919
with:
2020
distribution: temurin
2121
java-version: 21
2222

23-
- uses: actions/cache@v4
23+
- uses: actions/cache@v5
2424
with:
2525
path: |
2626
~/.gradle/caches
@@ -36,7 +36,7 @@ jobs:
3636
run: ./gradlew --no-daemon --console=plain spotlessCheck --info
3737

3838
- name: Upload build artifacts
39-
uses: actions/upload-artifact@v4
39+
uses: actions/upload-artifact@v6
4040
with:
4141
name: build-outputs
4242
path: |
@@ -53,15 +53,15 @@ jobs:
5353
os: [ ubuntu-latest, macos-latest, windows-latest ]
5454
runs-on: ${{ matrix.os }}
5555
steps:
56-
- uses: actions/checkout@v4
56+
- uses: actions/checkout@v5
5757
with:
5858
ref: ${{ github.event.release.tag_name }}
59-
- uses: actions/setup-java@v4
59+
- uses: actions/setup-java@v5
6060
with:
6161
distribution: temurin
6262
java-version: 21
6363

64-
- uses: actions/cache@v4
64+
- uses: actions/cache@v5
6565
with:
6666
path: |
6767
~/.gradle/caches
@@ -71,7 +71,7 @@ jobs:
7171
gradle-${{ runner.os }}-
7272
7373
- name: Download build artifacts
74-
uses: actions/download-artifact@v4
74+
uses: actions/download-artifact@v7
7575
with:
7676
name: build-outputs
7777

@@ -90,18 +90,18 @@ jobs:
9090
matrix:
9191
module: [ primitives, theming, platformtheme ]
9292
steps:
93-
- uses: actions/checkout@v4
93+
- uses: actions/checkout@v5
9494
with:
9595
ref: ${{ github.event.release.tag_name }}
96-
- uses: actions/setup-java@v4
96+
- uses: actions/setup-java@v5
9797
with:
9898
distribution: temurin
9999
java-version: 21
100100

101101
- name: Gradle cache
102-
uses: gradle/actions/setup-gradle@v4
102+
uses: gradle/actions/setup-gradle@v5
103103

104-
- uses: actions/cache@v4
104+
- uses: actions/cache@v5
105105
with:
106106
path: |
107107
~/.gradle/caches
@@ -111,7 +111,7 @@ jobs:
111111
gradle-${{ runner.os }}-
112112
113113
- name: Download build artifacts
114-
uses: actions/download-artifact@v4
114+
uses: actions/download-artifact@v7
115115
with:
116116
name: build-outputs
117117

@@ -134,7 +134,7 @@ jobs:
134134
sudo udevadm trigger --name-match=kvm
135135
136136
- name: AVD cache
137-
uses: actions/cache@v4
137+
uses: actions/cache@v5
138138
id: avd-cache
139139
with:
140140
path: |
@@ -158,16 +158,16 @@ jobs:
158158
runs-on: ubuntu-latest
159159
environment: maven-central
160160
steps:
161-
- uses: actions/checkout@v4
161+
- uses: actions/checkout@v5
162162
with:
163163
ref: ${{ github.event.release.tag_name }}
164-
- uses: gradle/actions/wrapper-validation@v3
165-
- uses: actions/setup-java@v4
164+
- uses: gradle/actions/wrapper-validation@v5
165+
- uses: actions/setup-java@v5
166166
with:
167167
distribution: temurin
168168
java-version: 21
169169

170-
- uses: actions/cache@v4
170+
- uses: actions/cache@v5
171171
with:
172172
path: |
173173
~/.gradle/caches
@@ -177,7 +177,7 @@ jobs:
177177
gradle-${{ runner.os }}-
178178
179179
- name: Download build artifacts
180-
uses: actions/download-artifact@v4
180+
uses: actions/download-artifact@v7
181181
with:
182182
name: build-outputs
183183

0 commit comments

Comments
 (0)