mirror of
https://github.com/gradle/actions.git
synced 2026-03-22 03:55:47 +08:00
With this change, the caching functionality of `setup-gradle` and `dependency-submission` is now provided by `gradle-actions-caching`, a closed-source library distributed under our [Terms of Use](https://gradle.com/legal/terms-of-use/). The rest of the action implementation remains open source. Using `setup-gradle` or `dependency-submission` with caching enabled involves loading and using the `gradle-actions-caching` component, requiring acceptance of the [Terms of Use](https://gradle.com/legal/terms-of-use/). There are no functional changes to caching provided by these actions: all workflows will continue to function as before. The non-caching aspects of action implementation remain open source. By running these actions with caching disabled they can be used without ever loading `gradle-actions-caching` or accepting the license terms. Supporting the caching infrastructure in this project requires a substantial engineering investment by Gradle Technologies, which we can sustain thanks to Develocity, our commercial offering. Caching technologies are a core part of the Develocity offering, and the caching in `setup-gradle` fits squarely in that space. This licensing change lets us continue to build advanced capabilities that go beyond what we would offer as open source. Proper production-ready Configuration Cache support will be the first capability. Improving build performance for self-hosted runners will follow. We may introduce functionality restrictions in future updates. However, caching functionality will remain free for public repositories. We have a long-standing commitment to open source, as maintainers of Gradle Build Tool, and by [sponsoring the open source community](https://gradle.com/oss-sponsored-by-develocity/) with free Develocity licenses. Public repositories are primarily used by open source projects, and we remain committed to supporting them. - Implementation of caching logic to save and restore Gradle User Home content has been removed, replaced by the `gradle-actions-caching` component. - The `@actions/caching` library is still used to cache Gradle distributions that are downloaded and provisioned by `setup-gradle`. This PR updates to the latest version of `@actions/caching`, and removes the patch that is no longer required. - License notices are now displayed in documentation, logs and the generated Job Summary.
173 lines
5.5 KiB
YAML
173 lines
5.5 KiB
YAML
name: Test wrapper validation
|
||
|
||
on:
|
||
workflow_call:
|
||
inputs:
|
||
runner-os:
|
||
type: string
|
||
default: '["ubuntu-latest"]'
|
||
skip-dist:
|
||
type: boolean
|
||
default: false
|
||
|
||
env:
|
||
SKIP_DIST: ${{ inputs.skip-dist }}
|
||
|
||
permissions:
|
||
contents: read
|
||
|
||
jobs:
|
||
wrapper-validation-setup-gradle:
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
os: ${{fromJSON(inputs.runner-os)}}
|
||
runs-on: ${{ matrix.os }}
|
||
steps:
|
||
- name: Checkout sources
|
||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||
- name: Initialize integ-test
|
||
uses: ./.github/actions/init-integ-test
|
||
|
||
- name: Run wrapper-validation-action
|
||
id: setup-gradle
|
||
uses: ./setup-gradle
|
||
env:
|
||
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: ''
|
||
continue-on-error: true
|
||
|
||
- name: Check failure
|
||
shell: bash
|
||
run: |
|
||
if [ "${{ steps.setup-gradle.outcome}}" != "failure" ] ; then
|
||
echo "Expected validation to fail, but it didn't"
|
||
exit 1
|
||
fi
|
||
|
||
wrapper-validation-success:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout sources
|
||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||
- name: Initialize integ-test
|
||
uses: ./.github/actions/init-integ-test
|
||
|
||
- name: Run wrapper-validation-action
|
||
id: action-test
|
||
uses: ./wrapper-validation
|
||
with:
|
||
# to allow the invalid wrapper jar present in test data
|
||
allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||
min-wrapper-count: 10
|
||
|
||
- name: Check outcome
|
||
env:
|
||
# 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
|
||
FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }}
|
||
FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == '' }}
|
||
shell: bash
|
||
run: |
|
||
if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then
|
||
echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS"
|
||
exit 1
|
||
fi
|
||
|
||
wrapper-validation-error:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout sources
|
||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||
- name: Initialize integ-test
|
||
uses: ./.github/actions/init-integ-test
|
||
|
||
- name: Run wrapper-validation-action
|
||
id: action-test
|
||
uses: ./wrapper-validation
|
||
# Expected to fail; validated below
|
||
continue-on-error: true
|
||
|
||
- name: Check outcome
|
||
env:
|
||
# 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
|
||
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
||
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' }}
|
||
shell: bash
|
||
run: |
|
||
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
||
echo "Expected validation to fail, but it didn't"
|
||
exit 1
|
||
fi
|
||
|
||
if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then
|
||
echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS"
|
||
exit 1
|
||
fi
|
||
|
||
wrapper-validation-minimum-wrapper-count:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout sources
|
||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||
with:
|
||
sparse-checkout: |
|
||
.github
|
||
dist
|
||
wrapper-validation
|
||
|
||
- name: Initialize integ-test
|
||
uses: ./.github/actions/init-integ-test
|
||
|
||
- name: Run wrapper-validation-action
|
||
id: action-test
|
||
uses: ./wrapper-validation
|
||
with:
|
||
min-wrapper-count: 7
|
||
# There are only 6 wrappers in workflow-samples, so expected to fail
|
||
continue-on-error: true
|
||
|
||
- name: Check outcome
|
||
env:
|
||
# 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
|
||
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
||
shell: bash
|
||
run: |
|
||
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
||
echo "Expected validation to fail, but it didn't"
|
||
exit 1
|
||
fi
|
||
|
||
wrapper-validation-zero-wrappers:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout sources
|
||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2 # Checkout the repository with no wrappers
|
||
with:
|
||
sparse-checkout: |
|
||
.github/actions
|
||
dist
|
||
wrapper-validation
|
||
- name: Initialize integ-test
|
||
uses: ./.github/actions/init-integ-test
|
||
|
||
- name: Run wrapper-validation-action
|
||
id: action-test
|
||
uses: ./wrapper-validation
|
||
# Expected to fail; validated below
|
||
continue-on-error: true
|
||
|
||
- name: Check outcome
|
||
env:
|
||
# 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
|
||
VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }}
|
||
shell: bash
|
||
run: |
|
||
if [ "$VALIDATION_FAILED" != "true" ] ; then
|
||
echo "Expected validation to fail, but it didn't"
|
||
exit 1
|
||
fi
|