name: CI-integ-test on: workflow_dispatch: push: jobs: determine-suite: runs-on: ubuntu-latest outputs: runner-os: ${{ steps.determine-suite.outputs.suite == 'quick' && '["ubuntu-latest"]' || '["ubuntu-latest", "windows-latest", "macos-latest"]' }} cache-key-prefix: ${{ steps.determine-suite.outputs.suite == 'quick' && '0' || github.run_number }} steps: - name: Get current PR details uses: 8BitJonny/gh-get-current-pr@3.0.0 id: PR - name: Determine suite to run id: determine-suite run: | # Always run quick suite if we are not in the core `gradle/actions` repository # This reduces the load for developers working on forks if [ "${{ github.repository }}" != "gradle/actions" ]; then echo "Not in core repository: suite=quick" echo "suite=quick" >> "$GITHUB_OUTPUT" exit 0 fi # Always run quick suite for dependabot PRs if [ "${{ github.actor }}" == "dependabot[bot]" ]; then echo "Dependabot: suite=quick" echo "suite=quick" >> "$GITHUB_OUTPUT" exit 0 fi # Run full suite for PRs if [ "${{ steps.PR.outputs.pr_found }}" == "false" ]; then echo "PR not found: suite=quick" echo "suite=quick" >> "$GITHUB_OUTPUT" else echo "PR found: suite=full" echo "suite=full" >> "$GITHUB_OUTPUT" fi build-distribution: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v4 - name: Build and upload distribution uses: ./.github/actions/build-dist action-inputs: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-action-inputs.yml with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' build-scan-publish: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-build-scan-publish.yml with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' cache-cleanup: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-cache-cleanup.yml with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{github.run_number}}-' # Requires a fresh cache entry each run caching-config: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-caching-config.yml with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' dependency-graph: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-dependency-graph.yml permissions: contents: write with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' dependency-submission: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-dependency-submission.yml permissions: contents: write with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' dependency-submission-failures: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-dependency-submission-failures.yml permissions: contents: write with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' execution-with-caching: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-execution-with-caching.yml with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' execution: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-execution.yml with: runner-os: '${{ needs.determine-suite.outputs.runner-os }}' cache-key-prefix: '${{ needs.determine-suite.outputs.cache-key-prefix }}-' develocity-injection: if: ${{ vars.HAS_GRADLE_ACTIONS_SECRETS == 'true' }} needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-inject-develocity.yml with: runner-os: '["ubuntu-latest"]' secrets: DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} provision-gradle-versions: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-provision-gradle-versions.yml with: runner-os: '["ubuntu-latest"]' restore-configuration-cache: if: ${{ vars.HAS_GRADLE_ACTIONS_SECRETS == 'true' }} needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-restore-configuration-cache.yml with: runner-os: '["ubuntu-latest"]' secrets: GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }} restore-containerized-gradle-home: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml restore-custom-gradle-home: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml restore-gradle-home: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-restore-gradle-home.yml with: runner-os: '["ubuntu-latest"]' restore-java-toolchain: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-restore-java-toolchain.yml with: runner-os: '["ubuntu-latest"]' sample-kotlin-dsl: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml with: runner-os: '["ubuntu-latest"]' sample-gradle-plugin: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml with: runner-os: '["ubuntu-latest"]' toolchain-detection: needs: [determine-suite, build-distribution] uses: ./.github/workflows/integ-test-detect-java-toolchains.yml with: runner-os: '["ubuntu-latest"]'