Skip to content

Commit 645ea63

Browse files
committed
Simplify CI matrix to use latest Gradle version per Java version
- Reduce matrix from 13 combinations to 5 (one per Java version) - Use Gradle 8.14.3 for Java 8, 11, 17 (latest 8.x) - Use Gradle 9.2.1 for Java 21, 25 (latest 9.x) - Add Gradle setup step using gradle-build-action - Add compatibility validation step as safety check - Update Gradle wrapper to match matrix version - Improve caching with Gradle version in cache key - Update artifact names to include both Java and Gradle versions
1 parent b907d61 commit 645ea63

File tree

1 file changed

+65
-6
lines changed

1 file changed

+65
-6
lines changed

.github/workflows/ci.yml

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,26 @@ on:
88

99
jobs:
1010
build:
11-
name: Build and Test (JDK ${{ matrix.java-version }})
11+
name: Build and Test (JDK ${{ matrix.java-version }}, Gradle ${{ matrix.gradle-version }})
1212
runs-on: ubuntu-latest
1313

1414
strategy:
1515
fail-fast: false # Don't cancel other jobs if one fails
1616
matrix:
17-
java-version: ['8', '11', '17', '21', '25']
17+
include:
18+
# Use latest Gradle version that supports each Java version
19+
# Java 8, 11, 17: Latest Gradle 8.x (8.14.3 supports Java 8-21)
20+
- java-version: '8'
21+
gradle-version: '8.14.3'
22+
- java-version: '11'
23+
gradle-version: '8.14.3'
24+
- java-version: '17'
25+
gradle-version: '8.14.3'
26+
# Java 21, 25: Latest Gradle 9.x (9.2.1 supports Java 19-25)
27+
- java-version: '21'
28+
gradle-version: '9.2.1'
29+
- java-version: '25'
30+
gradle-version: '9.2.1'
1831

1932
steps:
2033
- name: Checkout code
@@ -31,16 +44,62 @@ jobs:
3144
with:
3245
node-version: '18'
3346

47+
- name: Setup Gradle ${{ matrix.gradle-version }}
48+
uses: gradle/gradle-build-action@v2
49+
with:
50+
gradle-version: ${{ matrix.gradle-version }}
51+
52+
- name: Validate Gradle-Java compatibility
53+
run: |
54+
JAVA_VERSION=${{ matrix.java-version }}
55+
GRADLE_VERSION="${{ matrix.gradle-version }}"
56+
57+
echo "Checking compatibility: Java $JAVA_VERSION with Gradle $GRADLE_VERSION"
58+
59+
# Gradle 7.x supports Java 8-19
60+
if [[ "$GRADLE_VERSION" == 7.* ]]; then
61+
if [[ "$JAVA_VERSION" -ge 8 && "$JAVA_VERSION" -le 19 ]]; then
62+
echo "✓ Compatible: Gradle 7.x supports Java 8-19"
63+
else
64+
echo "✗ Incompatible: Gradle 7.x requires Java 8-19, but Java $JAVA_VERSION is specified"
65+
exit 1
66+
fi
67+
# Gradle 8.x supports Java 8-21
68+
elif [[ "$GRADLE_VERSION" == 8.* ]]; then
69+
if [[ "$JAVA_VERSION" -ge 8 && "$JAVA_VERSION" -le 21 ]]; then
70+
echo "✓ Compatible: Gradle 8.x supports Java 8-21"
71+
else
72+
echo "✗ Incompatible: Gradle 8.x requires Java 8-21, but Java $JAVA_VERSION is specified"
73+
exit 1
74+
fi
75+
# Gradle 9.x supports Java 19-25
76+
elif [[ "$GRADLE_VERSION" == 9.* ]]; then
77+
if [[ "$JAVA_VERSION" -ge 19 && "$JAVA_VERSION" -le 25 ]]; then
78+
echo "✓ Compatible: Gradle 9.x supports Java 19-25"
79+
else
80+
echo "✗ Incompatible: Gradle 9.x requires Java 19-25, but Java $JAVA_VERSION is specified"
81+
exit 1
82+
fi
83+
else
84+
echo "⚠ Unknown Gradle version: $GRADLE_VERSION"
85+
fi
86+
shell: bash
87+
3488
- name: Cache Gradle dependencies
3589
uses: actions/cache@v3
3690
with:
3791
path: |
3892
~/.gradle/caches
3993
~/.gradle/wrapper
40-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
94+
key: ${{ runner.os }}-gradle-${{ matrix.gradle-version }}-${{ hashFiles('**/*.gradle*') }}
4195
restore-keys: |
96+
${{ runner.os }}-gradle-${{ matrix.gradle-version }}-
4297
${{ runner.os }}-gradle-
4398
99+
- name: Update Gradle wrapper
100+
run: gradle wrapper --gradle-version ${{ matrix.gradle-version }} --no-daemon
101+
shell: bash
102+
44103
- name: Build and test with benchmarks
45104
run: ./gradlew -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" --stacktrace check benchmark
46105
shell: bash
@@ -49,20 +108,20 @@ jobs:
49108
if: always()
50109
uses: actions/upload-artifact@v4
51110
with:
52-
name: test-results-jdk${{ matrix.java-version }}
111+
name: test-results-jdk${{ matrix.java-version }}-gradle${{ matrix.gradle-version }}
53112
path: build/test-results/
54113
retention-days: 7
55114

56115
- name: Upload coverage reports
57116
if: always()
58117
uses: actions/upload-artifact@v4
59118
with:
60-
name: coverage-reports-jdk${{ matrix.java-version }}
119+
name: coverage-reports-jdk${{ matrix.java-version }}-gradle${{ matrix.gradle-version }}
61120
path: build/reports/jacoco/
62121
retention-days: 7
63122

64123
- name: Upload build artifacts
65-
if: matrix.java-version == '11'
124+
if: matrix.java-version == '11' && matrix.gradle-version == '8.14.3'
66125
uses: actions/upload-artifact@v4
67126
with:
68127
name: build-artifacts

0 commit comments

Comments
 (0)