Decouple build JDK from test JDK; upgrade shadow to 9.2.2 #621
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. That JDK is already installed on the runner and | |
| # exposed as JAVA_HOME_<version>_X64; org.gradle.java.installations.fromEnv points Gradle's | |
| # toolchain detection at it (auto-detection does not scan the runner tool cache on its own). | |
| - name: Execute Gradle Build | |
| run: > | |
| ./gradlew -S build | |
| -DtestGradleVersion=${{ matrix.gradle-version }} | |
| -PtestJavaVersion=${{ matrix.java-version }} | |
| -Dorg.gradle.java.installations.fromEnv=JAVA_HOME_${{ matrix.java-version }}_X64 | |
| # 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 |