mirror of
https://github.com/gradle/actions
synced 2024-11-27 11:52:24 +00:00
Refactor integ-tests into suites
- Extract 2 suites to make it possible to reduce concurrency - Add separate workflow for integ-test and integ-test-full
This commit is contained in:
parent
d74ee73e9f
commit
bcd07e6643
5 changed files with 184 additions and 149 deletions
29
.github/workflows/ci-integ-test-full.yml
vendored
Normal file
29
.github/workflows/ci-integ-test-full.yml
vendored
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
name: CI-integ-test-full
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- 'dist/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: integ-test-${{ github.ref }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
caching-integ-tests:
|
||||||
|
uses: ./.github/workflows/suite-integ-test-caching.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
skip-dist: true
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
other-integ-tests:
|
||||||
|
uses: ./.github/workflows/suite-integ-test-other.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
skip-dist: true
|
||||||
|
secrets: inherit
|
165
.github/workflows/ci-integ-test.yml
vendored
165
.github/workflows/ci-integ-test.yml
vendored
|
@ -8,42 +8,18 @@ on:
|
||||||
- 'main'
|
- 'main'
|
||||||
- 'release/**'
|
- 'release/**'
|
||||||
- 'dev/**' # Allow running tests on dev branches without a PR
|
- 'dev/**' # Allow running tests on dev branches without a PR
|
||||||
|
paths-ignore:
|
||||||
|
- 'dist/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: integ-tests-${{ github.ref }}
|
group: integ-test-${{ github.ref }}
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
determine-suite:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
runner-os: ${{ steps.determine-suite.outputs.suite == 'quick' && '["ubuntu-latest"]' || '["ubuntu-latest", "windows-latest", "macos-latest"]' }}
|
|
||||||
suite: ${{ steps.determine-suite.outputs.suite }}
|
|
||||||
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 with "[bot] Update dist directory" commit message
|
|
||||||
if [ "${{ github.event.head_commit.message }}" == "[bot] Update dist directory" ]; then
|
|
||||||
echo "Bot commit 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:
|
build-distribution:
|
||||||
needs: [determine-suite]
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
|
@ -52,125 +28,16 @@ jobs:
|
||||||
if: ${{ needs.determine-suite.outputs.suite != 'full' }}
|
if: ${{ needs.determine-suite.outputs.suite != 'full' }}
|
||||||
uses: ./.github/actions/build-dist
|
uses: ./.github/actions/build-dist
|
||||||
|
|
||||||
build-scan-publish:
|
caching-integ-tests:
|
||||||
needs: [determine-suite, build-distribution]
|
needs: build-distribution
|
||||||
uses: ./.github/workflows/integ-test-build-scan-publish.yml
|
uses: ./.github/workflows/suite-integ-test-caching.yml
|
||||||
with:
|
with:
|
||||||
runner-os: '${{ needs.determine-suite.outputs.runner-os }}'
|
skip-dist: false
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
secrets: inherit
|
||||||
|
|
||||||
cache-cleanup:
|
other-integ-tests:
|
||||||
needs: [determine-suite, build-distribution]
|
needs: build-distribution
|
||||||
uses: ./.github/workflows/integ-test-cache-cleanup.yml
|
uses: ./.github/workflows/suite-integ-test-other.yml
|
||||||
with:
|
with:
|
||||||
runner-os: '${{ needs.determine-suite.outputs.runner-os }}'
|
skip-dist: false
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
secrets: inherit
|
||||||
|
|
||||||
caching-config:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-caching-config.yml
|
|
||||||
with:
|
|
||||||
runner-os: '${{ needs.determine-suite.outputs.runner-os }}'
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
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 }}'
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
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 }}'
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
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 }}'
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
develocity-injection:
|
|
||||||
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-inject-develocity.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
secrets:
|
|
||||||
DEVELOCITY_ACCESS_KEY: ${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}
|
|
||||||
|
|
||||||
provision-gradle-versions:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-provision-gradle-versions.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
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:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
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
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
restore-custom-gradle-home:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
restore-gradle-home:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-restore-gradle-home.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
restore-java-toolchain:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
sample-kotlin-dsl:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
sample-gradle-plugin:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
toolchain-detection:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-detect-toolchains.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
||||||
wrapper-validation:
|
|
||||||
needs: [determine-suite, build-distribution]
|
|
||||||
uses: ./.github/workflows/integ-test-wrapper-validation.yml
|
|
||||||
with:
|
|
||||||
skip-dist: ${{ needs.determine-suite.outputs.suite == 'full' }}
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ jobs:
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Check failure
|
- name: Check failure
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ "${{ steps.setup-gradle.outcome}}" != "failure" ] ; then
|
if [ "${{ steps.setup-gradle.outcome}}" != "failure" ] ; then
|
||||||
echo "Expected validation to fail, but it didn't"
|
echo "Expected validation to fail, but it didn't"
|
||||||
|
@ -62,6 +63,7 @@ jobs:
|
||||||
# below to not accidentally inject code into shell script or break its syntax
|
# below to not accidentally inject code into shell script or break its syntax
|
||||||
FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }}
|
FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }}
|
||||||
FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == '' }}
|
FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == '' }}
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then
|
if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then
|
||||||
echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS"
|
echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS"
|
||||||
|
@ -89,6 +91,7 @@ jobs:
|
||||||
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
||||||
FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }}
|
FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }}
|
||||||
FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == 'sources/test/jest/wrapper-validation/data/invalid/gradle-wrapper.jar|sources/test/jest/wrapper-validation/data/invalid/gradlе-wrapper.jar' }}
|
FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == 'sources/test/jest/wrapper-validation/data/invalid/gradle-wrapper.jar|sources/test/jest/wrapper-validation/data/invalid/gradlе-wrapper.jar' }}
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
||||||
echo "Expected validation to fail, but it didn't"
|
echo "Expected validation to fail, but it didn't"
|
||||||
|
@ -123,6 +126,7 @@ jobs:
|
||||||
# Evaluate workflow expressions here as env variable values instead of inside shell script
|
# Evaluate workflow expressions here as env variable values instead of inside shell script
|
||||||
# below to not accidentally inject code into shell script or break its syntax
|
# below to not accidentally inject code into shell script or break its syntax
|
||||||
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
||||||
echo "Expected validation to fail, but it didn't"
|
echo "Expected validation to fail, but it didn't"
|
||||||
|
@ -153,6 +157,7 @@ jobs:
|
||||||
# Evaluate workflow expressions here as env variable values instead of inside shell script
|
# Evaluate workflow expressions here as env variable values instead of inside shell script
|
||||||
# below to not accidentally inject code into shell script or break its syntax
|
# below to not accidentally inject code into shell script or break its syntax
|
||||||
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
||||||
echo "Expected validation to fail, but it didn't"
|
echo "Expected validation to fail, but it didn't"
|
||||||
|
|
52
.github/workflows/suite-integ-test-caching.yml
vendored
Normal file
52
.github/workflows/suite-integ-test-caching.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: CI-integ-test
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest"]'
|
||||||
|
skip-dist:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cache-cleanup:
|
||||||
|
uses: ./.github/workflows/integ-test-cache-cleanup.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
caching-config:
|
||||||
|
uses: ./.github/workflows/integ-test-caching-config.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
restore-configuration-cache:
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
|
uses: ./.github/workflows/integ-test-restore-configuration-cache.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
secrets:
|
||||||
|
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
|
||||||
|
restore-containerized-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
restore-custom-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
restore-gradle-home:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-gradle-home.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
restore-java-toolchain:
|
||||||
|
uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
82
.github/workflows/suite-integ-test-other.yml
vendored
Normal file
82
.github/workflows/suite-integ-test-other.yml
vendored
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
name: CI-integ-test
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest"]'
|
||||||
|
skip-dist:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-scan-publish:
|
||||||
|
uses: ./.github/workflows/integ-test-build-scan-publish.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
dependency-graph:
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
dependency-submission:
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-submission.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
dependency-submission-failures:
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-submission-failures.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
develocity-injection:
|
||||||
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
|
uses: ./.github/workflows/integ-test-inject-develocity.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
secrets:
|
||||||
|
DEVELOCITY_ACCESS_KEY: ${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}
|
||||||
|
|
||||||
|
provision-gradle-versions:
|
||||||
|
uses: ./.github/workflows/integ-test-provision-gradle-versions.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
sample-kotlin-dsl:
|
||||||
|
uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
sample-gradle-plugin:
|
||||||
|
uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
toolchain-detection:
|
||||||
|
uses: ./.github/workflows/integ-test-detect-toolchains.yml
|
||||||
|
with:
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|
||||||
|
wrapper-validation:
|
||||||
|
uses: ./.github/workflows/integ-test-wrapper-validation.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
Loading…
Reference in a new issue