mirror of
https://github.com/gradle/actions
synced 2024-11-24 02:12:12 +00:00
be0b7f44a7
This is an attempt to stabilize our CI workflows.
181 lines
6.5 KiB
YAML
181 lines
6.5 KiB
YAML
name: CI-integ-test
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
- 'release/**'
|
|
- 'dev/**' # Allow running tests on dev branches without a PR
|
|
|
|
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: '0' # ${{ steps.determine-suite.outputs.suite == 'quick' && '0' || github.run_number }}
|
|
steps:
|
|
- 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 'main' on forks
|
|
if [ "${{ github.repository }}" != "gradle/actions" ]; then
|
|
echo "Not in core repository: suite=quick"
|
|
echo "suite=quick" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
|
|
# Run full suite for push trigger on 'main' and 'release/*' branches
|
|
if [[ "${{ github.ref_name }}" == "main" || "${{ github.ref_name }}" == "release/"* ]]; then
|
|
echo "Push to main branch: suite=full"
|
|
echo "suite=full" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
|
|
# Run quick suite for everything else
|
|
echo "Everything else: suite=quick"
|
|
echo "suite=quick" >> "$GITHUB_OUTPUT"
|
|
|
|
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:
|
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
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:
|
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
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:
|
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
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: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
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: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
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"]'
|