@@ -9,17 +9,37 @@ permissions:
99 contents : read
1010
1111jobs :
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
0 commit comments