Decouple build JDK from test JDK; upgrade shadow to 9.2.2 #622
Workflow file for this run
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: Java CI with Gradle | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - 'release/**' | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| quick-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: 17 | |
| distribution: temurin | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v6 | |
| with: | |
| develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | |
| - name: Execute Gradle Build | |
| run: ./gradlew build | |
| test-gradle-version: | |
| needs: quick-check | |
| strategy: | |
| fail-fast: false | |
| # Test earliest and latest supported version of 5.x, 6.x, 7.x, and 8.x. | |
| # The plugin fatjar is always built with a fixed, modern JDK (see "Set up JDK" below); | |
| # java-version here is only the JDK that each Gradle version under test runs on, selected | |
| # via a Gradle toolchain (-PtestJavaVersion). Older Gradle versions require older JDKs. | |
| matrix: | |
| include: | |
| - gradle-version: "5.2.1" | |
| java-version: "8" | |
| - gradle-version: "5.6.4" | |
| java-version: "8" | |
| - gradle-version: "6.0.1" | |
| java-version: "11" | |
| - gradle-version: "6.9.4" | |
| java-version: "11" | |
| - gradle-version: "7.1.1" | |
| java-version: "11" | |
| - gradle-version: "7.6.6" | |
| java-version: "17" | |
| - gradle-version: "8.0.2" | |
| java-version: "17" | |
| - gradle-version: "8.14.4" | |
| java-version: "21" | |
| - gradle-version: "9.0.0" | |
| java-version: "21" | |
| - gradle-version: "9.4.1" | |
| java-version: "21" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| # Fixed build JDK: compiles the plugin and builds the shadow fatjar. Must satisfy the build | |
| # tooling's own JDK requirement (the shadow plugin needs Java 17+), independent of the older | |
| # JDK the Gradle version under test runs on. | |
| - name: Set up JDK | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: 17 | |
| distribution: temurin | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v6 | |
| with: | |
| develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | |
| # -PtestJavaVersion runs the :plugin-test module (and thus the Gradle version under test) on | |
| # the matrix JDK via a Gradle toolchain. The matrix JDKs are preinstalled on the runner; | |
| # relying here on Gradle toolchain auto-detection to locate them (auto-download is disabled, | |
| # so a missing toolchain fails the build rather than provisioning one). | |
| - name: Execute Gradle Build | |
| run: > | |
| ./gradlew -S build | |
| -DtestGradleVersion=${{ matrix.gradle-version }} | |
| -PtestJavaVersion=${{ matrix.java-version }} | |
| # Aggregates the test-gradle-version matrix into a single status check. | |
| # Enable "merge when checks pass" / branch protection against this job rather than | |
| # the individual matrix jobs, whose names change whenever the matrix is edited. | |
| test-gradle-versions: | |
| needs: test-gradle-version | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Verify all matrix jobs succeeded | |
| if: ${{ needs.test-gradle-version.result != 'success' }} | |
| run: | | |
| echo "test-gradle-version matrix result: ${{ needs.test-gradle-version.result }}" | |
| exit 1 | |
| self-test: | |
| needs: quick-check | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write # Required to submit the dependency graph snapshot to GitHub | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v5 | |
| with: | |
| java-version: 17 | |
| distribution: temurin | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v6 | |
| with: | |
| develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | |
| - name: Self Test :plugin | |
| run: ./plugin-self-test ForceDependencyResolutionPlugin_resolveAllDependencies | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_DEPENDENCY_GRAPH_JOB_ID: ${{ github.run_id }} | |
| GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR: "plugin-self-test" | |
| GITHUB_DEPENDENCY_GRAPH_REF: ${{ github.ref }} | |
| GITHUB_DEPENDENCY_GRAPH_SHA: ${{ github.sha }} | |
| GITHUB_DEPENDENCY_GRAPH_WORKSPACE: ${{ github.workspace }} | |
| - name: Save plugin JSON report | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: plugin-json | |
| path: build/reports/dependency-graph-snapshots/plugin-self-test.json | |
| if-no-files-found: error |