Fix Gradle 9 compatibility issues #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ master, main ] | |
| pull_request: | |
| branches: [ master, main ] | |
| jobs: | |
| build: | |
| name: Build and Test (JDK ${{ matrix.java-version }}, Gradle ${{ matrix.gradle-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false # Don't cancel other jobs if one fails | |
| matrix: | |
| include: | |
| # Use latest Gradle version that supports each Java version | |
| # Java 8, 11, 17: Latest Gradle 8.x (8.14.3 supports Java 8-21) | |
| - java-version: '8' | |
| gradle-version: '8.14.3' | |
| - java-version: '11' | |
| gradle-version: '8.14.3' | |
| - java-version: '17' | |
| gradle-version: '8.14.3' | |
| # Java 21, 25: Latest Gradle 9.x (9.2.1 supports Java 19-25) | |
| - java-version: '21' | |
| gradle-version: '9.2.1' | |
| - java-version: '25' | |
| gradle-version: '9.2.1' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK ${{ matrix.java-version }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ matrix.java-version }} | |
| distribution: 'temurin' | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| - name: Setup Gradle ${{ matrix.gradle-version }} | |
| uses: gradle/gradle-build-action@v2 | |
| with: | |
| gradle-version: ${{ matrix.gradle-version }} | |
| - name: Validate Gradle-Java compatibility | |
| run: | | |
| JAVA_VERSION=${{ matrix.java-version }} | |
| GRADLE_VERSION="${{ matrix.gradle-version }}" | |
| echo "Checking compatibility: Java $JAVA_VERSION with Gradle $GRADLE_VERSION" | |
| # Gradle 7.x supports Java 8-19 | |
| if [[ "$GRADLE_VERSION" == 7.* ]]; then | |
| if [[ "$JAVA_VERSION" -ge 8 && "$JAVA_VERSION" -le 19 ]]; then | |
| echo "✓ Compatible: Gradle 7.x supports Java 8-19" | |
| else | |
| echo "✗ Incompatible: Gradle 7.x requires Java 8-19, but Java $JAVA_VERSION is specified" | |
| exit 1 | |
| fi | |
| # Gradle 8.x supports Java 8-21 | |
| elif [[ "$GRADLE_VERSION" == 8.* ]]; then | |
| if [[ "$JAVA_VERSION" -ge 8 && "$JAVA_VERSION" -le 21 ]]; then | |
| echo "✓ Compatible: Gradle 8.x supports Java 8-21" | |
| else | |
| echo "✗ Incompatible: Gradle 8.x requires Java 8-21, but Java $JAVA_VERSION is specified" | |
| exit 1 | |
| fi | |
| # Gradle 9.x supports Java 19-25 | |
| elif [[ "$GRADLE_VERSION" == 9.* ]]; then | |
| if [[ "$JAVA_VERSION" -ge 19 && "$JAVA_VERSION" -le 25 ]]; then | |
| echo "✓ Compatible: Gradle 9.x supports Java 19-25" | |
| else | |
| echo "✗ Incompatible: Gradle 9.x requires Java 19-25, but Java $JAVA_VERSION is specified" | |
| exit 1 | |
| fi | |
| else | |
| echo "⚠ Unknown Gradle version: $GRADLE_VERSION" | |
| fi | |
| shell: bash | |
| - name: Cache Gradle dependencies | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ matrix.gradle-version }}-${{ hashFiles('**/*.gradle*') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle-${{ matrix.gradle-version }}- | |
| ${{ runner.os }}-gradle- | |
| - name: Update Gradle wrapper | |
| run: gradle wrapper --gradle-version ${{ matrix.gradle-version }} --no-daemon | |
| shell: bash | |
| - name: Build and test with benchmarks | |
| run: ./gradlew -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" --stacktrace check benchmark | |
| shell: bash | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results-jdk${{ matrix.java-version }}-gradle${{ matrix.gradle-version }} | |
| path: build/test-results/ | |
| retention-days: 7 | |
| - name: Upload coverage reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-reports-jdk${{ matrix.java-version }}-gradle${{ matrix.gradle-version }} | |
| path: build/reports/jacoco/ | |
| retention-days: 7 | |
| - name: Upload build artifacts | |
| if: matrix.java-version == '11' && matrix.gradle-version == '8.14.3' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: build/libs/*.jar | |
| retention-days: 1 | |
| - name: Coveralls | |
| if: matrix.java-version == '11' && github.event_name == 'push' | |
| continue-on-error: true | |
| env: | |
| COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} | |
| run: ./gradlew coveralls | |
| shell: bash | |