mirror of
https://github.com/gradle/actions.git
synced 2026-06-05 19:32:18 +00:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 242685e775 | |||
| 11d4d83c63 | |||
| 50e97c2cd7 | |||
| f2e6298504 | |||
| b294b1e2db | |||
| 83d3189aae | |||
| 1d5db06d26 | |||
| 1c80961550 | |||
| 9e99920b14 | |||
| bb8aaaf9d5 | |||
| f5dfb43fc8 | |||
| ff9ae24c39 | |||
| ac396bf1a8 | |||
| f333b2d34b | |||
| d341a58140 |
@@ -3,7 +3,7 @@ name: 'Build and upload distribution'
|
|||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version: 24
|
node-version: 24
|
||||||
cache: npm
|
cache: npm
|
||||||
@@ -23,7 +23,7 @@ runs:
|
|||||||
cp -r sources/dist .
|
cp -r sources/dist .
|
||||||
|
|
||||||
- name: Upload distribution
|
- name: Upload distribution
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
path: dist/
|
path: dist/
|
||||||
|
|||||||
@@ -18,15 +18,15 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: npm
|
cache: npm
|
||||||
cache-dependency-path: sources/package-lock.json
|
cache-dependency-path: sources/package-lock.json
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
# Use a released version to avoid breakages
|
# Use a released version to avoid breakages
|
||||||
uses: gradle/actions/setup-gradle@39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f # v6.0.1
|
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
|
||||||
env:
|
env:
|
||||||
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5
|
uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.6
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
dist/**
|
dist/**
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v3.29.5
|
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3.29.5
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
config: |
|
config: |
|
||||||
@@ -43,4 +43,4 @@ jobs:
|
|||||||
- sources/src
|
- sources/src
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v3.29.5
|
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3.29.5
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||||
with:
|
with:
|
||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
# Use a released version to avoid breakages
|
# Use a released version to avoid breakages
|
||||||
uses: gradle/actions/setup-gradle@39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f # v6.0.1
|
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
|
||||||
env:
|
env:
|
||||||
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
||||||
- name: Run integration tests
|
- name: Run integration tests
|
||||||
|
|||||||
@@ -17,21 +17,32 @@ jobs:
|
|||||||
caching-integ-tests:
|
caching-integ-tests:
|
||||||
uses: ./.github/workflows/suite-integ-test-caching.yml
|
uses: ./.github/workflows/suite-integ-test-caching.yml
|
||||||
concurrency:
|
concurrency:
|
||||||
group: CI-integ-test-full
|
group: CI-integ-test-caching
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
with:
|
with:
|
||||||
runner-os: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
|
||||||
skip-dist: true
|
skip-dist: true
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
other-integ-tests:
|
other-integ-tests:
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
needs: caching-integ-tests
|
||||||
uses: ./.github/workflows/suite-integ-test-other.yml
|
uses: ./.github/workflows/suite-integ-test-other.yml
|
||||||
concurrency:
|
concurrency:
|
||||||
group: CI-integ-test-full
|
group: CI-integ-test-other
|
||||||
|
cancel-in-progress: false
|
||||||
|
with:
|
||||||
|
skip-dist: true
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
dependency-submission-integ-tests:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
needs: other-integ-tests
|
||||||
|
uses: ./.github/workflows/suite-integ-test-dependency-submission.yml
|
||||||
|
concurrency:
|
||||||
|
group: CI-integ-test-dependency-submission
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
with:
|
with:
|
||||||
runner-os: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
|
||||||
skip-dist: true
|
skip-dist: true
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Build and upload distribution
|
- name: Build and upload distribution
|
||||||
if: ${{ needs.determine-suite.outputs.suite != 'full' }}
|
if: ${{ needs.determine-suite.outputs.suite != 'full' }}
|
||||||
uses: ./.github/actions/build-dist
|
uses: ./.github/actions/build-dist
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
needs: build-distribution
|
needs: build-distribution
|
||||||
uses: ./.github/workflows/suite-integ-test-caching.yml
|
uses: ./.github/workflows/suite-integ-test-caching.yml
|
||||||
concurrency:
|
concurrency:
|
||||||
group: CI-integ-test
|
group: CI-integ-test-caching
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
with:
|
with:
|
||||||
skip-dist: false
|
skip-dist: false
|
||||||
@@ -37,10 +37,22 @@ jobs:
|
|||||||
other-integ-tests:
|
other-integ-tests:
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
needs: build-distribution
|
needs: caching-integ-tests
|
||||||
uses: ./.github/workflows/suite-integ-test-other.yml
|
uses: ./.github/workflows/suite-integ-test-other.yml
|
||||||
concurrency:
|
concurrency:
|
||||||
group: CI-integ-test
|
group: CI-integ-test-other
|
||||||
|
cancel-in-progress: false
|
||||||
|
with:
|
||||||
|
skip-dist: false
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
dependency-submission-integ-tests:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
needs: other-integ-tests
|
||||||
|
uses: ./.github/workflows/suite-integ-test-dependency-submission.yml
|
||||||
|
concurrency:
|
||||||
|
group: CI-integ-test-dependency-submission
|
||||||
cancel-in-progress: false
|
cancel-in-progress: false
|
||||||
with:
|
with:
|
||||||
skip-dist: false
|
skip-dist: false
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
show-progress: false
|
show-progress: false
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||||
# format to the repository Actions tab.
|
# format to the repository Actions tab.
|
||||||
- name: 'Upload artifact'
|
- name: 'Upload artifact'
|
||||||
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
name: SARIF file
|
name: SARIF file
|
||||||
path: results.sarif
|
path: results.sarif
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: npm
|
cache: npm
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
validate-typings:
|
validate-typings:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- uses: typesafegithub/github-actions-typing@9ddf35b71a482be7d8922b28e8d00df16b77e315 # v2.2.2
|
- uses: typesafegithub/github-actions-typing@9ddf35b71a482be7d8922b28e8d00df16b77e315 # v2.2.2
|
||||||
with:
|
with:
|
||||||
ignored-action-files: |
|
ignored-action-files: |
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
validation:
|
validation:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- uses: gradle/actions/wrapper-validation@39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f # v6.0.1
|
- uses: gradle/actions/wrapper-validation@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
|
||||||
with:
|
with:
|
||||||
allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Build and upload distribution
|
- name: Build and upload distribution
|
||||||
uses: ./.github/actions/build-dist
|
uses: ./.github/actions/build-dist
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -132,12 +132,29 @@ jobs:
|
|||||||
working-directory: .github/workflow-samples/kotlin-dsl
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
run: ./gradlew assemble
|
run: ./gradlew assemble
|
||||||
|
|
||||||
|
basic-caching:
|
||||||
|
needs: build-distribution
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: ./setup-gradle
|
||||||
|
with:
|
||||||
|
cache-provider: basic
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew assemble
|
||||||
|
|
||||||
terms-of-use-accepted:
|
terms-of-use-accepted:
|
||||||
needs: build-distribution
|
needs: build-distribution
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -155,7 +172,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Build and upload distribution
|
- name: Build and upload distribution
|
||||||
uses: ./.github/actions/build-dist
|
uses: ./.github/actions/build-dist
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
name: Test basic cache provider
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
default: '0'
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest"]'
|
||||||
|
skip-dist:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
env:
|
||||||
|
SKIP_DIST: ${{ inputs.skip-dist }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: basic-cache-provider-${{ inputs.cache-key-prefix }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
basic-cache-seed-build:
|
||||||
|
strategy:
|
||||||
|
max-parallel: 1
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Setup Gradle with basic cache provider
|
||||||
|
uses: ./setup-gradle
|
||||||
|
with:
|
||||||
|
cache-provider: basic
|
||||||
|
cache-read-only: false # For testing, allow writing cache entries on non-default branches
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew build
|
||||||
|
|
||||||
|
basic-cache-verify-build:
|
||||||
|
needs: basic-cache-seed-build
|
||||||
|
strategy:
|
||||||
|
max-parallel: 1
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Setup Gradle with basic cache provider
|
||||||
|
uses: ./setup-gradle
|
||||||
|
with:
|
||||||
|
cache-provider: basic
|
||||||
|
cache-read-only: true
|
||||||
|
- name: Build kotlin-dsl project
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
run: ./gradlew build --offline
|
||||||
@@ -41,7 +41,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
run: gradle help
|
run: gradle help
|
||||||
- name: Check Build Scan url
|
- name: Check Build Scan url
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ jobs:
|
|||||||
run: ./gradlew help
|
run: ./gradlew help
|
||||||
- name: Check Build Scan url is captured
|
- name: Check Build Scan url is captured
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
@@ -115,7 +115,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest # This test only runs on Ubuntu
|
runs-on: ubuntu-latest # This test only runs on Ubuntu
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ jobs:
|
|||||||
run: ./gradlew help
|
run: ./gradlew help
|
||||||
- name: Check Build Scan url is captured
|
- name: Check Build Scan url is captured
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
@@ -146,7 +146,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ jobs:
|
|||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest # Test is not compatible with Windows
|
runs-on: ubuntu-latest # Test is not compatible with Windows
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ jobs:
|
|||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest # Test is not compatible with Windows
|
runs-on: ubuntu-latest # Test is not compatible with Windows
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -272,7 +272,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest # Test is not compatible with Windows
|
runs-on: ubuntu-latest # Test is not compatible with Windows
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest # Test is not compatible with Windows
|
runs-on: ubuntu-latest # Test is not compatible with Windows
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -350,7 +350,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -382,7 +382,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -401,7 +401,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -72,7 +72,7 @@ jobs:
|
|||||||
run: gradle help
|
run: gradle help
|
||||||
- name: Check Build Scan url
|
- name: Check Build Scan url
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
@@ -106,7 +106,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -129,7 +129,7 @@ jobs:
|
|||||||
run: "[ ${#GRADLE_ENTERPRISE_ACCESS_KEY} -gt 500 ] || (echo 'GRADLE_ENTERPRISE_ACCESS_KEY does not look like a short lived token'; exit 1)"
|
run: "[ ${#GRADLE_ENTERPRISE_ACCESS_KEY} -gt 500 ] || (echo 'GRADLE_ENTERPRISE_ACCESS_KEY does not look like a short lived token'; exit 1)"
|
||||||
- name: Check Build Scan url
|
- name: Check Build Scan url
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
@@ -162,7 +162,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -205,7 +205,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -225,7 +225,7 @@ jobs:
|
|||||||
run: gradle help
|
run: gradle help
|
||||||
- name: Check Build Scan url
|
- name: Check Build Scan url
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
run: gradle help
|
run: gradle help
|
||||||
- name: Check current version output parameter
|
- name: Check current version output parameter
|
||||||
if: ${{ !startsWith(steps.gradle-current.outputs.gradle-version , '9.') }}
|
if: ${{ !startsWith(steps.gradle-current.outputs.gradle-version , '9.') }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.gradle-current.outputs.gradle-version }}"')
|
core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.gradle-current.outputs.gradle-version }}"')
|
||||||
@@ -105,7 +105,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ jobs:
|
|||||||
gradle-version: ${{ matrix.gradle }}
|
gradle-version: ${{ matrix.gradle }}
|
||||||
- name: Check output parameter
|
- name: Check output parameter
|
||||||
if: ${{ steps.setup-gradle.outputs.gradle-version != matrix.gradle }}
|
if: ${{ steps.setup-gradle.outputs.gradle-version != matrix.gradle }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.setup-gradle.outputs.gradle-version }}"')
|
core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.setup-gradle.outputs.gradle-version }}"')
|
||||||
@@ -132,7 +132,7 @@ jobs:
|
|||||||
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
||||||
- name: Check Build Scan url
|
- name: Check Build Scan url
|
||||||
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
core.setFailed('No Build Scan detected')
|
core.setFailed('No Build Scan detected')
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
container: fedora:latest
|
container: fedora:latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
container: fedora:latest
|
container: fedora:latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
@@ -56,7 +56,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Initialize integ-test
|
- name: Initialize integ-test
|
||||||
uses: ./.github/actions/init-integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
.github
|
.github
|
||||||
@@ -145,7 +145,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2 # Checkout the repository with no wrappers
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v4.2.2 # Checkout the repository with no wrappers
|
||||||
with:
|
with:
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
.github/actions
|
.github/actions
|
||||||
|
|||||||
@@ -45,3 +45,21 @@ jobs:
|
|||||||
uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
|
uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
|
||||||
with:
|
with:
|
||||||
skip-dist: ${{ inputs.skip-dist }}
|
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 }}
|
||||||
|
|
||||||
|
basic-cache-provider:
|
||||||
|
uses: ./.github/workflows/integ-test-basic-cache-provider.yml
|
||||||
|
with:
|
||||||
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
|
skip-dist: ${{ inputs.skip-dist }}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
name: suite-integ-test-dependency-submission
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest"]'
|
||||||
|
skip-dist:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
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 }}
|
||||||
|
|
||||||
@@ -20,33 +20,6 @@ jobs:
|
|||||||
runner-os: '${{ inputs.runner-os }}'
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
skip-dist: ${{ inputs.skip-dist }}
|
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:
|
develocity-injection:
|
||||||
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
if: ${{ ! github.event.pull_request.head.repo.fork }}
|
||||||
uses: ./.github/workflows/integ-test-inject-develocity.yml
|
uses: ./.github/workflows/integ-test-inject-develocity.yml
|
||||||
@@ -61,18 +34,6 @@ jobs:
|
|||||||
runner-os: '${{ inputs.runner-os }}'
|
runner-os: '${{ inputs.runner-os }}'
|
||||||
skip-dist: ${{ inputs.skip-dist }}
|
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:
|
toolchain-detection:
|
||||||
uses: ./.github/workflows/integ-test-detect-toolchains.yml
|
uses: ./.github/workflows/integ-test-detect-toolchains.yml
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: npm
|
cache: npm
|
||||||
@@ -48,7 +48,7 @@ jobs:
|
|||||||
|
|
||||||
# If there are no changes, this action will not create a pull request
|
# If there are no changes, this action will not create a pull request
|
||||||
- name: Create or update pull request
|
- name: Create or update pull request
|
||||||
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
|
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
||||||
with:
|
with:
|
||||||
branch: bot/wrapper-checksums-update
|
branch: bot/wrapper-checksums-update
|
||||||
author: bot-githubaction <bot-githubaction@gradle.com>
|
author: bot-githubaction <bot-githubaction@gradle.com>
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ Do not treat `actions/sources/vendor/gradle-actions-caching` as the source of tr
|
|||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
Before running any build or npm commands, initialize the PATH:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
source ~/.zshrc
|
||||||
|
```
|
||||||
|
|
||||||
To build this repository, run the `build` script at the root of that repository with no arguments:
|
To build this repository, run the `build` script at the root of that repository with no arguments:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# Distribution and Licensing of gradle/actions
|
||||||
|
|
||||||
|
This document provides a clear breakdown of the components within the `gradle/actions` repository, their respective licenses, and how we handle data and privacy. Our goal is to provide the best possible experience for running Gradle on GitHub Actions while maintaining our commitment to the open-source community.
|
||||||
|
|
||||||
|
## 1. Component Map
|
||||||
|
The `gradle/actions` project consists of three primary components:
|
||||||
|
|
||||||
|
| Component | License | Source | Description |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| **Action Runner** | **[MIT](LICENSE)** | Open | The core action logic: configures a local Gradle installation, performs wrapper validation, and reports on Gradle build execution. |
|
||||||
|
| **[Basic Caching](docs/setup-gradle.md#basic-caching)** | **[MIT](LICENSE)** | Open | Configures basic Gradle User Home caching using 'actions/cache'. |
|
||||||
|
| **[Enhanced Caching](docs/setup-gradle.md#enhanced-caching)** | **[Proprietary](licenses/gradle-actions-caching-license.txt)** | Closed | Uses the 'gradle-actions-caching' library to provide fine-grained caching of Gradle User Home, intelligent cache cleanup and other advanced features. |
|
||||||
|
|
||||||
|
By default, **Enhanced Caching** is enabled to provide the best experience.
|
||||||
|
|
||||||
|
## 2. The "Safe Harbor" Clause (Data Privacy)
|
||||||
|
The proprietary components of this action are governed by the **[Gradle Technologies Terms of Use](https://gradle.com/legal/gradle-technologies-terms-of-use/)**. We have updated these terms to include a specific safe harbor for users of `gradle-actions-caching`.
|
||||||
|
|
||||||
|
> **Plain English Summary:** Gradle does not claim ownership of any code, build artifacts, or other content processed by the caching library. These remain your sole property. We only use metadata (like cache keys) to facilitate the caching service.
|
||||||
|
|
||||||
|
## 3. Usage Tiers
|
||||||
|
To support the development of high-performance CI tooling, we offer the following usage model:
|
||||||
|
|
||||||
|
* **Public Repositories:**
|
||||||
|
* Both **Basic** and **Enhanced** caching are free forever. We are committed to supporting the open-source ecosystem at no cost.
|
||||||
|
* **Private Repositories:**
|
||||||
|
* **Basic Caching** is free forever under the MIT license.
|
||||||
|
* **Enhanced Caching** is currently in a **Free Preview** phase. We plan to introduce usage-based pricing for large-scale commercial organizations in the future.
|
||||||
|
|
||||||
|
While we haven't finalized specific usage thresholds yet, our intent is to keep Enhanced Caching free for individual developers and small teams. We are currently in a learning phase to ensure that future restrictions are focused on large-scale commercial users of the product. No matter how these limits evolve, the open-source Basic Caching provider will always remain a free, functional alternative for everyone.
|
||||||
|
|
||||||
|
## 4. Your Choice: Basic vs. Enhanced
|
||||||
|
We believe in user autonomy. If you do not wish to use proprietary code or accept the Gradle Technologies Terms of Use, you can opt-out of enhanced caching with a single line of configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: gradle/actions/setup-gradle@v6
|
||||||
|
with:
|
||||||
|
cache-provider: basic # Switches to the MIT-licensed open-source implementation
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> ## Licensing notice
|
||||||
|
>
|
||||||
|
> The software in this repository, except for the bundled `gradle-actions-caching` component, is licensed under the [MIT License](LICENSE).
|
||||||
|
>
|
||||||
|
> The caching functionality in this project has been extracted into `gradle-actions-caching`, a proprietary commercial component that is not covered by the MIT License for this repository.
|
||||||
|
>
|
||||||
|
> Use of the `gradle-actions-caching` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
||||||
|
>
|
||||||
|
> The `gradle-actions-caching` component is used only when enhanced caching is enabled and is not loaded or used with basic caching or when caching is disabled.
|
||||||
@@ -1,3 +1,14 @@
|
|||||||
|
Note on Repository Contents:
|
||||||
|
|
||||||
|
The software in this repository is primarily licensed under the MIT License (see below).
|
||||||
|
However, this repository includes a vendor-included component, 'gradle-actions-caching',
|
||||||
|
which is Proprietary and distributed under a different license:
|
||||||
|
see licenses/gradle-actions-caching-license.txt.
|
||||||
|
|
||||||
|
For a detailed breakdown of which components are Open Source (MIT) and which are
|
||||||
|
Proprietary, please refer to DISTRIBUTION.md and NOTICE.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ NOTICE
|
|||||||
The software in this repository, except for the bundled `gradle-actions-caching` component, is licensed under the MIT License.
|
The software in this repository, except for the bundled `gradle-actions-caching` component, is licensed under the MIT License.
|
||||||
|
|
||||||
The caching functionality in this project has been extracted into `gradle-actions-caching`, a proprietary commercial component that is not covered by the MIT License for this repository.
|
The caching functionality in this project has been extracted into `gradle-actions-caching`, a proprietary commercial component that is not covered by the MIT License for this repository.
|
||||||
The bundled `gradle-actions-caching` component is licensed and governed by a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
|
|
||||||
The `gradle-actions-caching` component is used only when caching is enabled and is not loaded or used when caching is disabled.
|
The `gradle-actions-caching` component is used only when enhanced caching is enabled and is not loaded or used with basic caching or when caching is disabled.
|
||||||
|
|
||||||
Use of the `gradle-actions-caching` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
Use the `gradle-actions-caching` component is subject to a separate license, available at license/gradle-actions-caching-license.txt.
|
||||||
If you do not agree to these license terms, do not use the gradle-actions-caching component.
|
|
||||||
|
For a detailed breakdown of components, licensing tiers, and data privacy terms, see DISTRIBUTION.md.
|
||||||
|
|||||||
@@ -2,21 +2,14 @@
|
|||||||
|
|
||||||
This repository contains a set of GitHub Actions that are useful for building Gradle projects on GitHub.
|
This repository contains a set of GitHub Actions that are useful for building Gradle projects on GitHub.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!NOTE]
|
||||||
> ## Licensing notice
|
> ### ⚡️ Choice of caching providers in v6
|
||||||
|
> To provide the fastest possible build experience this action includes **Enhanced Caching** via `gradle-actions-caching`, an optimized provider powered by proprietary technology. This feature is **free for all public repositories** and is currently available as a **Free Preview** for private repositories.
|
||||||
>
|
>
|
||||||
> The software in this repository is licensed under the [MIT License](LICENSE).
|
> **Prefer a 100% Open Source (MIT) path?**
|
||||||
|
> We also provide a **Basic Caching** provider as a thin wrapper over `actions/cache`. This provider is **free for all repositories** (public and private) and can be enabled at any time by setting `cache-provider: basic`.
|
||||||
>
|
>
|
||||||
> The caching functionality in this project has been extracted into `gradle-actions-caching`, a proprietary commercial component that is not covered by the MIT License for this repository.
|
> For a full breakdown of the components, usage tiers, and our **Safe Harbor** data privacy commitment, see our [Distribution & Licensing Guide](./DISTRIBUTION.md).
|
||||||
> The bundled `gradle-actions-caching` component is licensed and governed by a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
>
|
|
||||||
> The `gradle-actions-caching` component is used only when caching is enabled and is not loaded or used when caching is disabled.
|
|
||||||
>
|
|
||||||
> Use of the `gradle-actions-caching` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
> If you do not agree to these license terms, do not use the `gradle-actions-caching` component.
|
|
||||||
|
|
||||||
This license notice will be displayed in workflow logs and each job summary. To suppress this message,
|
|
||||||
either [accept the terms of use](docs/setup-gradle.md#publishing-to-scansgradlecom) in your workflow, or [provide a Develocity access key](docs/setup-gradle.md#managing-develocity-access-keys).
|
|
||||||
|
|
||||||
## The `setup-gradle` action
|
## The `setup-gradle` action
|
||||||
|
|
||||||
@@ -46,7 +39,7 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 17
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew build
|
run: ./gradlew build
|
||||||
```
|
```
|
||||||
@@ -84,7 +77,7 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 17
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
See the [full action documentation](docs/dependency-submission.md) for more advanced usage scenarios.
|
See the [full action documentation](docs/dependency-submission.md) for more advanced usage scenarios.
|
||||||
@@ -113,7 +106,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- uses: gradle/actions/wrapper-validation@v5
|
- uses: gradle/actions/wrapper-validation@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
See the [full action documentation](docs/wrapper-validation.md) for more advanced usage scenarios.
|
See the [full action documentation](docs/wrapper-validation.md) for more advanced usage scenarios.
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 17
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
See the [full action documentation](../docs/dependency-submission.md) for more advanced usage scenarios.
|
See the [full action documentation](../docs/dependency-submission.md) for more advanced usage scenarios.
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ inputs:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
# Cache configuration
|
# Cache configuration
|
||||||
|
cache-provider:
|
||||||
|
type: enum
|
||||||
|
allowed-values:
|
||||||
|
- basic
|
||||||
|
- enhanced
|
||||||
|
|
||||||
cache-disabled:
|
cache-disabled:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,14 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
|
|
||||||
# Cache configuration
|
# Cache configuration
|
||||||
|
cache-provider:
|
||||||
|
description: |
|
||||||
|
Specifies the caching implementation to use.
|
||||||
|
'enhanced' (default) uses the full-featured commercial caching service (gradle-actions-caching).
|
||||||
|
'basic' uses a simple open-source caching implementation based on GitHub Actions cache.
|
||||||
|
required: false
|
||||||
|
default: 'enhanced'
|
||||||
|
|
||||||
cache-disabled:
|
cache-disabled:
|
||||||
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
+133
-148
File diff suppressed because one or more lines are too long
+4
-4
File diff suppressed because one or more lines are too long
+150
-130
File diff suppressed because one or more lines are too long
+4
-4
File diff suppressed because one or more lines are too long
Vendored
+131
-146
File diff suppressed because one or more lines are too long
Vendored
+4
-4
File diff suppressed because one or more lines are too long
Vendored
+159
-171
File diff suppressed because one or more lines are too long
Vendored
+4
-4
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
@@ -15,21 +15,14 @@ for vulnerable dependencies, as well as to populate the
|
|||||||
|
|
||||||
If you're confused by the behaviour you're seeing or have specific questions, please check out [the FAQ](dependency-submission-faq.md) before raising an issue.
|
If you're confused by the behaviour you're seeing or have specific questions, please check out [the FAQ](dependency-submission-faq.md) before raising an issue.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!NOTE]
|
||||||
> ## Licensing notice
|
> ### ⚡️ Choice of caching providers in v6
|
||||||
|
> To provide the fastest possible build experience this action includes **Enhanced Caching** via `gradle-actions-caching`, an optimized provider powered by proprietary technology. This feature is **free for all public repositories** and is currently available as a **Free Preview** for private repositories.
|
||||||
>
|
>
|
||||||
> The software in this repository is licensed under the [MIT License](LICENSE).
|
> **Prefer a 100% Open Source (MIT) path?**
|
||||||
|
> We also provide a **Basic Caching** provider as a thin wrapper over `actions/cache`. This provider is **free for all repositories** (public and private) and can be enabled at any time by setting `cache-provider: basic`.
|
||||||
>
|
>
|
||||||
> The caching functionality in this project has been extracted into `gradle-actions-caching`, a proprietary commercial component that is not covered by the MIT License for this repository.
|
> For a full breakdown of the components, usage tiers, and our **Safe Harbor** data privacy commitment, see our [Distribution & Licensing Guide](../DISTRIBUTION.md).
|
||||||
> The bundled `gradle-actions-caching` component is licensed and governed by a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
>
|
|
||||||
> The `gradle-actions-caching` component is used only when caching is enabled and is not loaded or used when caching is disabled.
|
|
||||||
>
|
|
||||||
> Use of the `gradle-actions-caching` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
> If you do not agree to these license terms, do not use the `gradle-actions-caching` component.
|
|
||||||
|
|
||||||
This license notice will be displayed in workflow logs and each job summary. To suppress this message,
|
|
||||||
either [accept the terms of use](setup-gradle.md#publishing-to-scansgradlecom) in your workflow, or [provide a Develocity access key](setup-gradle.md#managing-develocity-access-keys).
|
|
||||||
|
|
||||||
## General usage
|
## General usage
|
||||||
|
|
||||||
@@ -59,7 +52,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
### Gradle execution
|
### Gradle execution
|
||||||
@@ -76,6 +69,10 @@ on the command-line will be used.
|
|||||||
The action provides the ability to override the Gradle version and task to execute, as well as provide
|
The action provides the ability to override the Gradle version and task to execute, as well as provide
|
||||||
additional arguments that will be passed to Gradle on the command-line. See [Configuration Parameters](#configuration-parameters) below.
|
additional arguments that will be passed to Gradle on the command-line. See [Configuration Parameters](#configuration-parameters) below.
|
||||||
|
|
||||||
|
### Selecting a cache provider
|
||||||
|
|
||||||
|
See [Selecting a cache provider](setup-gradle.md#selecting-a-cache-provider) for details on choosing between the `enhanced` (default) and `basic` cache providers via the `cache-provider` input.
|
||||||
|
|
||||||
### Disabling caching
|
### Disabling caching
|
||||||
|
|
||||||
Caching is enabled by default. You can disable caching for the action as follows:
|
Caching is enabled by default. You can disable caching for the action as follows:
|
||||||
@@ -91,7 +88,7 @@ Three input parameters are required, one to enable publishing and two more to ac
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
build-scan-publish: true
|
build-scan-publish: true
|
||||||
build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use"
|
build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use"
|
||||||
@@ -106,7 +103,7 @@ In some cases, the default action configuration will not be sufficient, and addi
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Generate and save dependency graph
|
- name: Generate and save dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
# Use a particular Gradle version instead of the configured wrapper.
|
# Use a particular Gradle version instead of the configured wrapper.
|
||||||
gradle-version: '8.6'
|
gradle-version: '8.6'
|
||||||
@@ -153,7 +150,7 @@ To reduce storage costs for these artifacts, you can:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Generate dependency graph but only store workflow artifacts for 1 day
|
- name: Generate dependency graph but only store workflow artifacts for 1 day
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
artifact-retention-days: 1 # Default is 30 days or as configured for repository
|
artifact-retention-days: 1 # Default is 30 days or as configured for repository
|
||||||
```
|
```
|
||||||
@@ -162,7 +159,7 @@ To reduce storage costs for these artifacts, you can:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Generate and submit dependency graph but do not store as workflow artifact
|
- name: Generate and submit dependency graph but do not store as workflow artifact
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: 'generate-and-submit' # Default value is 'generate-submit-and-upload'
|
dependency-graph: 'generate-and-submit' # Default value is 'generate-submit-and-upload'
|
||||||
```
|
```
|
||||||
@@ -322,7 +319,7 @@ For example, if you want to exclude dependencies resolved by the `buildSrc` proj
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
# Exclude all dependencies that originate solely in the 'buildSrc' project
|
# Exclude all dependencies that originate solely in the 'buildSrc' project
|
||||||
dependency-graph-exclude-projects: ':buildSrc'
|
dependency-graph-exclude-projects: ':buildSrc'
|
||||||
@@ -373,7 +370,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Add a dedicated Dependency Review workflow
|
#### 2. Add a dedicated Dependency Review workflow
|
||||||
@@ -435,7 +432,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Generate and save dependency graph
|
- name: Generate and save dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: generate-and-upload
|
dependency-graph: generate-and-upload
|
||||||
```
|
```
|
||||||
@@ -458,7 +455,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Download and submit dependency graph
|
- name: Download and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v5
|
uses: gradle/actions/dependency-submission@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: download-and-submit # Download saved dependency-graph and submit
|
dependency-graph: download-and-submit # Download saved dependency-graph and submit
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ To convert your workflows, simply replace:
|
|||||||
```
|
```
|
||||||
with
|
with
|
||||||
```
|
```
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
## The action `gradle/wrapper-validation-action` has been replaced by `gradle/actions/wrapper-validation`
|
## The action `gradle/wrapper-validation-action` has been replaced by `gradle/actions/wrapper-validation`
|
||||||
@@ -40,7 +40,7 @@ To convert your workflows, simply replace:
|
|||||||
```
|
```
|
||||||
with
|
with
|
||||||
```
|
```
|
||||||
uses: gradle/actions/wrapper-validation@v5
|
uses: gradle/actions/wrapper-validation@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using the action to execute Gradle via the `arguments` parameter is deprecated
|
## Using the action to execute Gradle via the `arguments` parameter is deprecated
|
||||||
@@ -82,7 +82,7 @@ The exact syntax depends on whether or not your project is configured with the [
|
|||||||
|
|
||||||
```
|
```
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
|
|
||||||
- name: Assemble the project
|
- name: Assemble the project
|
||||||
run: ./gradlew assemble
|
run: ./gradlew assemble
|
||||||
@@ -99,7 +99,7 @@ The exact syntax depends on whether or not your project is configured with the [
|
|||||||
|
|
||||||
```
|
```
|
||||||
- name: Setup Gradle for a non-wrapper project
|
- name: Setup Gradle for a non-wrapper project
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
gradle-version: '8.11'
|
gradle-version: '8.11'
|
||||||
|
|
||||||
|
|||||||
+213
-161
@@ -2,21 +2,14 @@
|
|||||||
|
|
||||||
This GitHub Action can be used to configure Gradle for optimal execution on any platform supported by GitHub Actions.
|
This GitHub Action can be used to configure Gradle for optimal execution on any platform supported by GitHub Actions.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!NOTE]
|
||||||
> ## Licensing notice
|
> ### ⚡️ Choice of caching providers in v6
|
||||||
|
> To provide the fastest possible build experience this action includes **Enhanced Caching** via `gradle-actions-caching`, an optimized provider powered by proprietary technology. This feature is **free for all public repositories** and is currently available as a **Free Preview** for private repositories.
|
||||||
>
|
>
|
||||||
> The software in this repository is licensed under the [MIT License](LICENSE).
|
> **Prefer a 100% Open Source (MIT) path?**
|
||||||
|
> We also provide a **Basic Caching** provider as a thin wrapper over `actions/cache`. This provider is **free for all repositories** (public and private) and can be enabled at any time by setting `cache-provider: basic`.
|
||||||
>
|
>
|
||||||
> The caching functionality in this project has been extracted into `gradle-actions-caching`, a proprietary commercial component that is not covered by the MIT License for this repository.
|
> For a full breakdown of the components, usage tiers, and our **Safe Harbor** data privacy commitment, see our [Distribution & Licensing Guide](../DISTRIBUTION.md).
|
||||||
> The bundled `gradle-actions-caching` component is licensed and governed by a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
>
|
|
||||||
> The `gradle-actions-caching` component is used only when caching is enabled and is not loaded or used when caching is disabled.
|
|
||||||
>
|
|
||||||
> Use of the `gradle-actions-caching` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
> If you do not agree to these license terms, do not use the `gradle-actions-caching` component.
|
|
||||||
|
|
||||||
This license notice will be displayed in workflow logs and each job summary. To suppress this message,
|
|
||||||
either [accept the terms of use](#publishing-to-scansgradlecom) in your workflow, or [provide a Develocity access key](#managing-develocity-access-keys).
|
|
||||||
|
|
||||||
## Why use the `setup-gradle` action?
|
## Why use the `setup-gradle` action?
|
||||||
|
|
||||||
@@ -62,7 +55,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
|
|
||||||
- name: Execute Gradle build
|
- name: Execute Gradle build
|
||||||
run: ./gradlew build
|
run: ./gradlew build
|
||||||
@@ -75,7 +68,7 @@ Downloaded Gradle versions are stored in the GitHub Actions cache, to avoid havi
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle 8.10
|
- name: Setup Gradle 8.10
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
gradle-version: '8.10' # Quotes required to prevent YAML converting to number
|
gradle-version: '8.10' # Quotes required to prevent YAML converting to number
|
||||||
- name: Build with Gradle 8.10
|
- name: Build with Gradle 8.10
|
||||||
@@ -113,7 +106,7 @@ jobs:
|
|||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@v5
|
- uses: gradle/actions/setup-gradle@v6
|
||||||
id: setup-gradle
|
id: setup-gradle
|
||||||
with:
|
with:
|
||||||
gradle-version: release-candidate
|
gradle-version: release-candidate
|
||||||
@@ -129,24 +122,44 @@ The cached state includes:
|
|||||||
- Any distributions downloaded to satisfy a `gradle-version` parameter.
|
- Any distributions downloaded to satisfy a `gradle-version` parameter.
|
||||||
- A subset of the Gradle User Home directory, including downloaded dependencies, wrapper distributions, and the local build cache.
|
- A subset of the Gradle User Home directory, including downloaded dependencies, wrapper distributions, and the local build cache.
|
||||||
|
|
||||||
To reduce the space required for caching, this action attempts to reduce duplication in cache entries on a best effort basis.
|
|
||||||
|
|
||||||
The state will be restored from the cache during the first `setup-gradle` step for any workflow job, and cache entries will be written back to the cache at the end of the job after all Gradle executions have been completed.
|
The state will be restored from the cache during the first `setup-gradle` step for any workflow job, and cache entries will be written back to the cache at the end of the job after all Gradle executions have been completed.
|
||||||
|
|
||||||
### Disabling caching
|
### Selecting a cache provider
|
||||||
|
|
||||||
|
The `setup-gradle` action offers two caching providers, offered under different license terms and with different features.
|
||||||
|
See [DISTRIBUTION.md](../DISTRIBUTION.md) for more details.
|
||||||
|
|
||||||
|
You choose which provider to use via the `cache-provider` input:
|
||||||
|
|
||||||
|
- **`enhanced`** (default): Uses the full-featured commercial `gradle-actions-caching` library. Provides advanced features like fine-grained cache entries, intelligent cache cleanup, and deduplication. See [Enhanced Caching](#enhanced-caching) for details.
|
||||||
|
- **`basic`**: A fully open-source (MIT) caching implementation built on the standard GitHub Actions cache (`@actions/cache`). Uses the same caching strategy as `actions/setup-java` with `cache: gradle`. See [Basic Caching](#basic-caching) for details.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Use the open-source basic cache provider
|
||||||
|
- uses: gradle/actions/setup-gradle@v6
|
||||||
|
id: setup-gradle
|
||||||
|
with:
|
||||||
|
cache-provider: basic
|
||||||
|
```
|
||||||
|
|
||||||
|
### Common cache configuration
|
||||||
|
|
||||||
|
The following options apply to both the `enhanced` and `basic` cache providers.
|
||||||
|
|
||||||
|
#### Disabling caching
|
||||||
|
|
||||||
Caching is enabled by default. You can disable caching for the action as follows:
|
Caching is enabled by default. You can disable caching for the action as follows:
|
||||||
```yaml
|
```yaml
|
||||||
cache-disabled: true
|
cache-disabled: true
|
||||||
```
|
```
|
||||||
|
|
||||||
### Using the cache read-only
|
#### Using the cache read-only
|
||||||
|
|
||||||
By default, The `setup-gradle` action will only write to the cache from Jobs on the default (`main`/`master`) branch.
|
By default, The `setup-gradle` action will only write to the cache from Jobs on the default (`main`/`master`) branch.
|
||||||
Jobs on other branches will read entries from the cache but will not write updated entries.
|
Jobs on other branches will read entries from the cache but will not write updated entries.
|
||||||
|
|
||||||
This setup is designed around [GitHub imposed restrictions on cache access](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache) and should work well in most scenarios.
|
This setup is designed around [GitHub imposed restrictions on cache access](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache) and should work well in most scenarios.
|
||||||
See [Optimizing cache effectiveness](#select-which-branches-should-write-to-the-cache) for a more detailed explanation.
|
See [Optimizing cache effectiveness](#optimizing-cache-effectiveness) for a more detailed explanation.
|
||||||
|
|
||||||
In some circumstances, it makes sense to change this default and configure a workflow Job to read existing cache entries but not to write changes back.
|
In some circumstances, it makes sense to change this default and configure a workflow Job to read existing cache entries but not to write changes back.
|
||||||
|
|
||||||
@@ -164,93 +177,7 @@ You can also configure read-only caching only for certain branches:
|
|||||||
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/release' }}
|
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/release' }}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Using the cache write-only
|
#### Incompatibility with other caching mechanisms
|
||||||
|
|
||||||
In certain circumstances it may be desirable to start with a clean Gradle User Home state, but to save the state at the end of a workflow Job:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
cache-write-only: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuring cache cleanup
|
|
||||||
|
|
||||||
The Gradle User Home directory tends to grow over time. When you switch to a new Gradle wrapper version
|
|
||||||
or upgrade a dependency version the old files are not automatically and immediately removed.
|
|
||||||
While this can make sense in a local environment, in a GitHub Actions environment
|
|
||||||
it can lead to ever-larger Gradle User Home cache entries being saved and restored.
|
|
||||||
|
|
||||||
To avoid this situation, the `setup-gradle` and `dependency-submission` actions will perform "cache-cleanup",
|
|
||||||
purging any unused files from the Gradle User Home before saving it to the GitHub Actions cache.
|
|
||||||
Cache cleanup will attempt to remove any files that are initially restored to the Gradle User Home directory
|
|
||||||
but that are not used used by Gradle during the GitHub Actions Workflow.
|
|
||||||
|
|
||||||
If a Gradle build fails when running the Job, then it is possible that some required files and dependencies
|
|
||||||
will not be touched during the Job. To prevent these files from being purged, the default behavior is for
|
|
||||||
cache cleanup to run only when all Gradle builds in the Job are successful.
|
|
||||||
|
|
||||||
Gradle Home cache cleanup is enabled by default, and can be controlled by the `cache-cleanup` parameter as follows:
|
|
||||||
- `cache-cleanup: always`: Always run cache cleanup, even when a Gradle build fails in the Job.
|
|
||||||
- `cache-cleanup: on-success` (default): Run cache cleanup when the Job contains no failing Gradle builds.
|
|
||||||
- `cache-cleanup: never`: Disable cache cleanup for the Job.
|
|
||||||
|
|
||||||
Cache cleanup will never run when the cache is configured as read-only or disabled.
|
|
||||||
|
|
||||||
### Overwriting an existing Gradle User Home
|
|
||||||
|
|
||||||
When the action detects that the Gradle User Home caches directory already exists (`$GRADLE_USER_HOME/caches`), then by default it will not overwrite the existing content of this directory.
|
|
||||||
This can occur when a prior action initializes this directory, or when using a self-hosted runner that retains this directory between uses.
|
|
||||||
|
|
||||||
In this case, the Job Summary will display a message like:
|
|
||||||
> Caching for Gradle actions was disabled due to pre-existing Gradle User Home
|
|
||||||
|
|
||||||
If you want to override the default and have the caches of the `setup-gradle` action overwrite existing content in the Gradle User Home, you can set the `cache-overwrite-existing` parameter to `true`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
cache-overwrite-existing: true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Saving configuration-cache data
|
|
||||||
|
|
||||||
When Gradle is executed with the [configuration-cache](https://docs.gradle.org/current/userguide/configuration_cache.html) enabled, the configuration-cache data is stored
|
|
||||||
in the project directory, at `<project-dir>/.gradle/configuration-cache`. Due to the way the configuration-cache works, [this file may contain stored credentials and other
|
|
||||||
secrets](https://docs.gradle.org/release-nightly/userguide/configuration_cache.html#config_cache:secrets), and this data needs to be encrypted to be safely stored in the GitHub Actions cache.
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> To avoid potentially leaking secrets in the configuration-cache entry, the action will only save or restore configuration-cache data if the `cache-encryption-key` parameter is set.
|
|
||||||
|
|
||||||
To benefit from configuration caching in your GitHub Actions workflow, you must:
|
|
||||||
- Execute your build with Gradle 8.6 or newer. This can be achieved directly or via the Gradle Wrapper.
|
|
||||||
- Enable the configuration cache for your build.
|
|
||||||
- Generate a [valid Gradle encryption key](https://docs.gradle.org/8.6/userguide/configuration_cache.html#config_cache:secrets:configuring_encryption_key) and save it as a [GitHub Actions secret](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions).
|
|
||||||
- Provide the secret key via the `cache-encryption-key` action parameter.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
jobs:
|
|
||||||
gradle-with-configuration-cache:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v6
|
|
||||||
- uses: actions/setup-java@v5
|
|
||||||
with:
|
|
||||||
distribution: temurin
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- uses: gradle/actions/setup-gradle@v5
|
|
||||||
with:
|
|
||||||
gradle-version: '8.6'
|
|
||||||
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
|
||||||
- run: gradle build --configuration-cache
|
|
||||||
```
|
|
||||||
|
|
||||||
Even with everything correctly configured, you may find that the configuration-cache entry is not reused in your workflow.
|
|
||||||
This is often due to a known issue: [Included builds containing build logic prevent configuration-cache reuse](https://github.com/gradle/actions/issues/21). Refer to the issue for more details.
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> The configuration cache cannot be saved or restored in workflows triggered by a pull requests from a repository fork.
|
|
||||||
> This is because [GitHub secrets are not passed to workflows triggered by PRs from forks](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#using-secrets-in-a-workflow).
|
|
||||||
> This prevents a malicious PR from reading the configuration-cache data, which may encode secrets read by Gradle.
|
|
||||||
|
|
||||||
### Incompatibility with other caching mechanisms
|
|
||||||
|
|
||||||
When using `setup-gradle` we recommend that you avoid using other mechanisms to save and restore the Gradle User Home.
|
When using `setup-gradle` we recommend that you avoid using other mechanisms to save and restore the Gradle User Home.
|
||||||
|
|
||||||
@@ -260,18 +187,22 @@ Specifically:
|
|||||||
|
|
||||||
Using either of these mechanisms may interfere with the caching provided by this action. If you choose to use a different mechanism to save and restore the Gradle User Home, you should disable the caching provided by this action, as described above.
|
Using either of these mechanisms may interfere with the caching provided by this action. If you choose to use a different mechanism to save and restore the Gradle User Home, you should disable the caching provided by this action, as described above.
|
||||||
|
|
||||||
## How Gradle User Home caching works
|
## Enhanced Caching
|
||||||
|
|
||||||
### Properties of the GitHub Actions cache
|
Enhanced Caching is the default cache provider. It uses the proprietary `gradle-actions-caching` library to provide advanced caching features including fine-grained cache entries, intelligent cache cleanup, and deduplication of cached content. This reduces cache storage requirements and improves restore times compared to basic caching.
|
||||||
|
|
||||||
|
### How Enhanced Caching works
|
||||||
|
|
||||||
|
#### Properties of the GitHub Actions cache
|
||||||
|
|
||||||
The GitHub Actions cache has some properties that present problems for efficient caching of the Gradle User Home.
|
The GitHub Actions cache has some properties that present problems for efficient caching of the Gradle User Home.
|
||||||
- Immutable entries: once a cache entry is written for a key, it cannot be overwritten or changed.
|
- Immutable entries: once a cache entry is written for a key, it cannot be overwritten or changed.
|
||||||
- Branch scope: cache entries written for a Git branch are not visible from actions running against different branches or tags. Entries written for the default branch are visible to all. https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache
|
- Branch scope: cache entries written for a Git branch are not visible from actions running against different branches or tags. Entries written for the default branch are visible to all. https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache
|
||||||
- Restore keys: if no exact match is found, a set of partial keys can be provided that will match by cache key prefix. https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
|
- Restore keys: if no exact match is found, a set of partial keys can be provided that will match by cache key prefix. https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
|
||||||
|
|
||||||
Each of these properties has influenced the design and implementation of the caching in `setup-gradle`, as described below.
|
Each of these properties has influenced the design and implementation of Enhanced Caching, as described below.
|
||||||
|
|
||||||
### Which content is cached
|
#### Which content is cached
|
||||||
|
|
||||||
Using experiments and observations, we have attempted to identify which Gradle User Home content is worth saving and restoring between build invocations. We considered both the respective size of the content and the impact this content has on build times. As well as the obvious candidates like downloaded dependencies, we saw that compiled build scripts, transformed Jar files, and other content can also have a significant impact.
|
Using experiments and observations, we have attempted to identify which Gradle User Home content is worth saving and restoring between build invocations. We considered both the respective size of the content and the impact this content has on build times. As well as the obvious candidates like downloaded dependencies, we saw that compiled build scripts, transformed Jar files, and other content can also have a significant impact.
|
||||||
|
|
||||||
@@ -283,9 +214,9 @@ In the end, we opted to save and restore as much content as is practical, includ
|
|||||||
- `caches/jars-9`: Jar files that have been processed/instrumented by Gradle
|
- `caches/jars-9`: Jar files that have been processed/instrumented by Gradle
|
||||||
- `caches/build-cache-1`: The local build cache
|
- `caches/build-cache-1`: The local build cache
|
||||||
|
|
||||||
In certain cases, a particular section of Gradle User Home will be too large to make caching effective. In these cases, particular subdirectories can be excluded from caching. See [Exclude content from Gradle User Home cache](#exclude-content-from-gradle-user-home-cache).
|
In certain cases, a particular section of Gradle User Home will be too large to make caching effective. In these cases, particular subdirectories can be excluded from caching. See [Include/exclude content from Gradle User Home](#includeexclude-content-from-gradle-user-home).
|
||||||
|
|
||||||
### Cache keys
|
#### Cache keys
|
||||||
|
|
||||||
The actual content of the Gradle User Home after a build is the result of many factors, including:
|
The actual content of the Gradle User Home after a build is the result of many factors, including:
|
||||||
- Core Gradle build files (`settings.gradle[.kts]`, `build.gradle[.kts]`, `gradle.properties`)
|
- Core Gradle build files (`settings.gradle[.kts]`, `build.gradle[.kts]`, `gradle.properties`)
|
||||||
@@ -307,7 +238,7 @@ Specifically, the cache key is: `${cache-protocol}-gradle|${runner-os}|${job-id}
|
|||||||
As such, the cache key is likely to change on each subsequent run of GitHub actions.
|
As such, the cache key is likely to change on each subsequent run of GitHub actions.
|
||||||
This allows the most recent state to always be available in the GitHub actions cache.
|
This allows the most recent state to always be available in the GitHub actions cache.
|
||||||
|
|
||||||
### Finding a matching cache entry
|
#### Finding a matching cache entry
|
||||||
|
|
||||||
In most cases, no exact match will exist for the cache key. Instead, the Gradle User Home will be restored for the closest matching cache entry, using a set of "restore keys". The entries will be matched with the following precedence:
|
In most cases, no exact match will exist for the cache key. Instead, the Gradle User Home will be restored for the closest matching cache entry, using a set of "restore keys". The entries will be matched with the following precedence:
|
||||||
- An exact match on OS, job id, workflow name, matrix, and Git SHA
|
- An exact match on OS, job id, workflow name, matrix, and Git SHA
|
||||||
@@ -321,9 +252,9 @@ After the Job is complete, the current Gradle User Home state will be collected
|
|||||||
|
|
||||||
Note that while effective, this mechanism is not inherently efficient. It requires the entire Gradle User Home directory to be stored separately for each branch, for every OS+Job+Matrix combination. In addition, it writes a new cache entry on every GitHub Actions run.
|
Note that while effective, this mechanism is not inherently efficient. It requires the entire Gradle User Home directory to be stored separately for each branch, for every OS+Job+Matrix combination. In addition, it writes a new cache entry on every GitHub Actions run.
|
||||||
|
|
||||||
This inefficiency is effectively mitigated by [Deduplication of Gradle User Home cache entries](#deduplication-of-gradle-user-home-cache-entries) and can be further optimized for a workflow using the techniques described in [Optimizing cache effectiveness](#optimizing-cache-effectiveness).
|
This inefficiency is effectively mitigated by [Deduplication of cache entries](#deduplication-of-cache-entries) and can be further optimized for a workflow using the techniques described in [Optimizing cache effectiveness](#optimizing-cache-effectiveness).
|
||||||
|
|
||||||
### Deduplication of Gradle User Home cache entries
|
#### Deduplication of cache entries
|
||||||
|
|
||||||
To reduce duplication between cache entries, certain artifacts in Gradle User Home are extracted and cached independently based on their identity. This allows each Gradle User Home cache entry to be relatively small, sharing common elements between them without duplication.
|
To reduce duplication between cache entries, certain artifacts in Gradle User Home are extracted and cached independently based on their identity. This allows each Gradle User Home cache entry to be relatively small, sharing common elements between them without duplication.
|
||||||
|
|
||||||
@@ -335,53 +266,78 @@ Artifacts that are cached independently include:
|
|||||||
|
|
||||||
For example, this means that all jobs executing a particular version of the Gradle wrapper will share a single common entry for this wrapper distribution and one for each of the generated Gradle API jars.
|
For example, this means that all jobs executing a particular version of the Gradle wrapper will share a single common entry for this wrapper distribution and one for each of the generated Gradle API jars.
|
||||||
|
|
||||||
### Stopping the Gradle daemon
|
#### Stopping the Gradle daemon
|
||||||
|
|
||||||
By default, the action will stop all running Gradle daemons in the post-action step, before saving the Gradle User Home state.
|
By default, the action will stop all running Gradle daemons in the post-action step, before saving the Gradle User Home state.
|
||||||
This allows for any Gradle User Home cleanup to occur, and avoid file-locking issues on Windows.
|
This allows for any Gradle User Home cleanup to occur, and avoid file-locking issues on Windows.
|
||||||
|
|
||||||
If caching is disabled or the cache is in read-only mode, the daemon will not be stopped and will continue running after the job is completed.
|
If caching is disabled or the cache is in read-only mode, the daemon will not be stopped and will continue running after the job is completed.
|
||||||
|
|
||||||
## Optimizing cache effectiveness
|
### Enhanced Caching configuration options
|
||||||
|
|
||||||
Cache storage space for GitHub actions is limited, and writing new cache entries can trigger the deletion of existing entries.
|
The following configuration options only apply when using the `enhanced` cache provider.
|
||||||
Eviction of shared cache entries can reduce cache effectiveness, slowing down your `setup-gradle` steps.
|
|
||||||
|
|
||||||
There are a several actions you can take if your cache use is less effective due to entry eviction.
|
#### Using the cache write-only
|
||||||
|
|
||||||
At the end of a Job, The `setup-gradle` action will write a summary of the Gradle builds executed, together with a detailed report of the cache entries that were read and written during the Job. This report can provide valuable insights that may help to determine the right way to optimize the cache usage for your workflow.
|
In certain circumstances it may be desirable to start with a clean Gradle User Home state, but to save the state at the end of a workflow Job:
|
||||||
|
|
||||||
### Select which jobs should write to the cache
|
```yaml
|
||||||
|
cache-write-only: true
|
||||||
|
```
|
||||||
|
|
||||||
Consider a workflow that first runs a Job "compile-and-unit-test" to compile the code and run some basic unit tests, which is followed by a matrix of parallel "integration-test" jobs that each run a set of integration tests for the repository. Each "integration test" Job requires all of the dependencies required by "compile-and-unit-test", and possibly one or 2 additional dependencies.
|
#### Overwriting an existing Gradle User Home
|
||||||
|
|
||||||
By default, a new cache entry will be written on completion of each integration test job. If no additional dependencies were downloaded then this cache entry will share the "dependencies" entry with the "compile-and-unit-test" job, but if a single dependency was downloaded then an entirely new "dependencies" entry would be written. (The `setup-gradle` action does not _yet_ support a layered cache that could do this more efficiently). If each of these "integration-test" entries with their different "dependencies" entries is too large, then it could result in other important entries being evicted from the GitHub Actions cache.
|
When the action detects that the Gradle User Home caches directory already exists (`$GRADLE_USER_HOME/caches`), then by default it will not overwrite the existing content of this directory.
|
||||||
|
This can occur when a prior action initializes this directory, or when using a self-hosted runner that retains this directory between uses.
|
||||||
|
|
||||||
Some techniques can be used to avoid/mitigate this issue:
|
In this case, the Job Summary will display a message like:
|
||||||
- Configure the "integration-test" jobs with `cache-read-only: true`, meaning that the Job will use the entry written by the "compile-and-unit-test" job. This will avoid the overhead of cache entries for each of these jobs, at the expense of re-downloading any additional dependencies required by "integration-test".
|
> Caching for Gradle actions was disabled due to pre-existing Gradle User Home
|
||||||
- Add a step to the "compile-and-unit-test" job which downloads all dependencies required by the integration-test jobs but does not execute the tests. This will allow the "dependencies" entry for "compile-and-unit-test" to be shared among all cache entries for "integration-test". The resulting "integration-test" entries should be much smaller, reducing the potential for eviction.
|
|
||||||
- Combine the above 2 techniques, so that no cache entry is written by "integration-test" jobs, but all required dependencies are already present from the restored "compile-and-unit-test" entry.
|
|
||||||
|
|
||||||
### Select which branches should write to the cache
|
If you want to override the default and have the caches of the `setup-gradle` action overwrite existing content in the Gradle User Home, you can set the `cache-overwrite-existing` parameter to `true`:
|
||||||
|
|
||||||
GitHub cache entries are not shared between builds on different branches or tags.
|
```yaml
|
||||||
Workflow runs can _only_ restore caches created in either the same branch or the default branch (usually `main`).
|
cache-overwrite-existing: true
|
||||||
This means that each branch will have its own Gradle User Home cache scope, and will not benefit from cache entries written for other (non-default) branches.
|
```
|
||||||
|
|
||||||
By default, The `setup-gradle` action will only _write_ to the cache for builds run on the default (`master`/`main`) branch.
|
#### Configuring cache cleanup
|
||||||
Jobs running on other branches will only read from the cache. In most cases, this is the desired behavior.
|
|
||||||
This is because Jobs running on other branches will benefit from the cached Gradle User Home from `main`,
|
|
||||||
without writing private cache entries which could lead to evicting these shared entries.
|
|
||||||
|
|
||||||
If you have other long-lived development branches that would benefit from writing to the cache,
|
The Gradle User Home directory tends to grow over time. When you switch to a new Gradle wrapper version
|
||||||
you can configure this by disabling the `cache-read-only` action parameter for these branches.
|
or upgrade a dependency version the old files are not automatically and immediately removed.
|
||||||
See [Using the cache read-only](#using-the-cache-read-only) for more details.
|
While this can make sense in a local environment, in a GitHub Actions environment
|
||||||
|
it can lead to ever-larger Gradle User Home cache entries being saved and restored.
|
||||||
|
|
||||||
Note there are some cases where writing cache entries is typically unhelpful (these are disabled by default):
|
To avoid this situation, the `setup-gradle` and `dependency-submission` actions will perform "cache-cleanup",
|
||||||
- For `pull_request` triggered runs, the cache scope is limited to the merge ref (`refs/pull/.../merge`) and can only be restored by re-runs of the same pull request.
|
purging any unused files from the Gradle User Home before saving it to the GitHub Actions cache.
|
||||||
- For `merge_group` triggered runs, the cache scope is limited to a temporary branch with a special prefix created to validate pull request changes, and won't be available on subsequent Merge Queue executions.
|
Cache cleanup will attempt to remove any files that are initially restored to the Gradle User Home directory
|
||||||
|
but that are not used by Gradle during the GitHub Actions Workflow.
|
||||||
|
|
||||||
### Exclude content from Gradle User Home cache
|
If a Gradle build fails when running the Job, then it is possible that some required files and dependencies
|
||||||
|
will not be touched during the Job. To prevent these files from being purged, the default behavior is for
|
||||||
|
cache cleanup to run only when all Gradle builds in the Job are successful.
|
||||||
|
|
||||||
|
Gradle Home cache cleanup is enabled by default, and can be controlled by the `cache-cleanup` parameter as follows:
|
||||||
|
- `cache-cleanup: always`: Always run cache cleanup, even when a Gradle build fails in the Job.
|
||||||
|
- `cache-cleanup: on-success` (default): Run cache cleanup when the Job contains no failing Gradle builds.
|
||||||
|
- `cache-cleanup: never`: Disable cache cleanup for the Job.
|
||||||
|
|
||||||
|
Cache cleanup will never run when the cache is configured as read-only or disabled.
|
||||||
|
|
||||||
|
#### Cache encryption key
|
||||||
|
|
||||||
|
The `cache-encryption-key` parameter allows you to provide a base64-encoded AES key to encrypt configuration-cache data stored in the GitHub Actions cache. This is useful when your configuration-cache entries contain sensitive information.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
|
||||||
|
```
|
||||||
|
|
||||||
|
A suitable key can be generated with:
|
||||||
|
```
|
||||||
|
openssl rand -base64 16
|
||||||
|
```
|
||||||
|
|
||||||
|
The key is exported as the `GRADLE_ENCRYPTION_KEY` environment variable for use by subsequent steps.
|
||||||
|
|
||||||
|
#### Include/exclude content from Gradle User Home
|
||||||
|
|
||||||
As well as any wrapper distributions, the action will attempt to save and restore the `caches` and `notifications` directories from Gradle User Home.
|
As well as any wrapper distributions, the action will attempt to save and restore the `caches` and `notifications` directories from Gradle User Home.
|
||||||
|
|
||||||
@@ -404,7 +360,57 @@ gradle-home-cache-excludes: |
|
|||||||
You can specify any number of fixed paths or patterns to include or exclude.
|
You can specify any number of fixed paths or patterns to include or exclude.
|
||||||
File pattern support is documented at https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#patterns-to-match-file-paths.
|
File pattern support is documented at https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#patterns-to-match-file-paths.
|
||||||
|
|
||||||
### Disable local build-cache when remote build-cache is available
|
#### Strict cache matching
|
||||||
|
|
||||||
|
By default, the Enhanced Caching provider will attempt to restore the Gradle User Home from cache entries written by other Jobs in the same workflow (using restore keys). Setting `gradle-home-cache-strict-match` to `true` disables this behavior, so that cache entries are only restored from the same Job.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
gradle-home-cache-strict-match: true
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> This is an experimental feature that may be useful if you find that cache entries from other Jobs are causing issues.
|
||||||
|
|
||||||
|
### Optimizing cache effectiveness
|
||||||
|
|
||||||
|
Cache storage space for GitHub actions is limited, and writing new cache entries can trigger the deletion of existing entries.
|
||||||
|
Eviction of shared cache entries can reduce cache effectiveness, slowing down your `setup-gradle` steps.
|
||||||
|
|
||||||
|
There are a several actions you can take if your cache use is less effective due to entry eviction.
|
||||||
|
|
||||||
|
At the end of a Job, The `setup-gradle` action will write a summary of the Gradle builds executed, together with a detailed report of the cache entries that were read and written during the Job. This report can provide valuable insights that may help to determine the right way to optimize the cache usage for your workflow.
|
||||||
|
|
||||||
|
#### Select which jobs should write to the cache
|
||||||
|
|
||||||
|
Consider a workflow that first runs a Job "compile-and-unit-test" to compile the code and run some basic unit tests, which is followed by a matrix of parallel "integration-test" jobs that each run a set of integration tests for the repository. Each "integration test" Job requires all of the dependencies required by "compile-and-unit-test", and possibly one or 2 additional dependencies.
|
||||||
|
|
||||||
|
By default, a new cache entry will be written on completion of each integration test job. If no additional dependencies were downloaded then this cache entry will share the "dependencies" entry with the "compile-and-unit-test" job, but if a single dependency was downloaded then an entirely new "dependencies" entry would be written. (The `setup-gradle` action does not _yet_ support a layered cache that could do this more efficiently). If each of these "integration-test" entries with their different "dependencies" entries is too large, then it could result in other important entries being evicted from the GitHub Actions cache.
|
||||||
|
|
||||||
|
Some techniques can be used to avoid/mitigate this issue:
|
||||||
|
- Configure the "integration-test" jobs with `cache-read-only: true`, meaning that the Job will use the entry written by the "compile-and-unit-test" job. This will avoid the overhead of cache entries for each of these jobs, at the expense of re-downloading any additional dependencies required by "integration-test".
|
||||||
|
- Add a step to the "compile-and-unit-test" job which downloads all dependencies required by the integration-test jobs but does not execute the tests. This will allow the "dependencies" entry for "compile-and-unit-test" to be shared among all cache entries for "integration-test". The resulting "integration-test" entries should be much smaller, reducing the potential for eviction.
|
||||||
|
- Combine the above 2 techniques, so that no cache entry is written by "integration-test" jobs, but all required dependencies are already present from the restored "compile-and-unit-test" entry.
|
||||||
|
|
||||||
|
#### Select which branches should write to the cache
|
||||||
|
|
||||||
|
GitHub cache entries are not shared between builds on different branches or tags.
|
||||||
|
Workflow runs can _only_ restore caches created in either the same branch or the default branch (usually `main`).
|
||||||
|
This means that each branch will have its own Gradle User Home cache scope, and will not benefit from cache entries written for other (non-default) branches.
|
||||||
|
|
||||||
|
By default, The `setup-gradle` action will only _write_ to the cache for builds run on the default (`master`/`main`) branch.
|
||||||
|
Jobs running on other branches will only read from the cache. In most cases, this is the desired behavior.
|
||||||
|
This is because Jobs running on other branches will benefit from the cached Gradle User Home from `main`,
|
||||||
|
without writing private cache entries which could lead to evicting these shared entries.
|
||||||
|
|
||||||
|
If you have other long-lived development branches that would benefit from writing to the cache,
|
||||||
|
you can configure this by disabling the `cache-read-only` action parameter for these branches.
|
||||||
|
See [Using the cache read-only](#using-the-cache-read-only) for more details.
|
||||||
|
|
||||||
|
Note there are some cases where writing cache entries is typically unhelpful (these are disabled by default):
|
||||||
|
- For `pull_request` triggered runs, the cache scope is limited to the merge ref (`refs/pull/.../merge`) and can only be restored by re-runs of the same pull request.
|
||||||
|
- For `merge_group` triggered runs, the cache scope is limited to a temporary branch with a special prefix created to validate pull request changes, and won't be available on subsequent Merge Queue executions.
|
||||||
|
|
||||||
|
#### Disable local build-cache when remote build-cache is available
|
||||||
|
|
||||||
If you have a remote build-cache available for your build, then it is recommended to do the following:
|
If you have a remote build-cache available for your build, then it is recommended to do the following:
|
||||||
- Enable [remote build-cache push](https://docs.gradle.org/current/userguide/build_cache.html#sec:build_cache_configure_use_cases) for your GitHub Actions builds
|
- Enable [remote build-cache push](https://docs.gradle.org/current/userguide/build_cache.html#sec:build_cache_configure_use_cases) for your GitHub Actions builds
|
||||||
@@ -414,6 +420,52 @@ As well as reducing the content that needs to be saved to the GitHub Actions cac
|
|||||||
this setup will ensure that your CI builds populate the remote cache and keep the cache entries fresh by reading these entries.
|
this setup will ensure that your CI builds populate the remote cache and keep the cache entries fresh by reading these entries.
|
||||||
Local builds can then benefit from the remote cache.
|
Local builds can then benefit from the remote cache.
|
||||||
|
|
||||||
|
## Basic Caching
|
||||||
|
|
||||||
|
Basic Caching is an open-source (MIT) alternative that uses `@actions/cache` to provide straightforward, path-based caching of Gradle dependencies. It uses the same caching strategy as `actions/setup-java` with `cache: gradle`.
|
||||||
|
|
||||||
|
To enable Basic Caching:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: gradle/actions/setup-gradle@v6
|
||||||
|
with:
|
||||||
|
cache-provider: basic
|
||||||
|
```
|
||||||
|
|
||||||
|
### What Basic Caching stores
|
||||||
|
|
||||||
|
The basic provider saves and restores two directories from the Gradle User Home:
|
||||||
|
- `~/.gradle/caches` — downloaded dependencies, compiled build scripts, transforms, and the local build cache
|
||||||
|
- `~/.gradle/wrapper` — wrapper distributions
|
||||||
|
|
||||||
|
### Cache key strategy
|
||||||
|
|
||||||
|
The cache key is computed from the contents of your Gradle build files, using the format:
|
||||||
|
|
||||||
|
`setup-java-{RUNNER_OS}-{arch}-gradle-{hash}`
|
||||||
|
|
||||||
|
The hash is derived from the following file patterns:
|
||||||
|
- `**/*.gradle*`
|
||||||
|
- `**/gradle-wrapper.properties`
|
||||||
|
- `buildSrc/**/Versions.kt`
|
||||||
|
- `buildSrc/**/Dependencies.kt`
|
||||||
|
- `gradle/*.versions.toml`
|
||||||
|
- `**/versions.properties`
|
||||||
|
|
||||||
|
Unlike the Enhanced Caching provider, Basic Caching does not use restore keys. If no exact cache key match is found, the cache starts empty. This means that when you update a dependency or change a build file, the next build will re-download all dependencies and write a fresh cache entry.
|
||||||
|
|
||||||
|
### Limitations
|
||||||
|
|
||||||
|
The basic provider does not support the following Enhanced Caching features:
|
||||||
|
- **Cache cleanup** (`cache-cleanup`): Stale entries are not automatically removed.
|
||||||
|
- **Deduplication**: The entire `caches` and `wrapper` directories are stored as a single cache entry, without deduplication of individual artifacts.
|
||||||
|
- **Include/exclude paths** (`gradle-home-cache-includes` / `gradle-home-cache-excludes`): The cached paths are fixed.
|
||||||
|
- **Write-only mode** (`cache-write-only`): Not available with basic caching.
|
||||||
|
- **Overwrite existing** (`cache-overwrite-existing`): Not available with basic caching.
|
||||||
|
- **Strict cache matching** (`gradle-home-cache-strict-match`): Not applicable since restore keys are not used.
|
||||||
|
|
||||||
|
If you need these features, switch to the default [Enhanced Caching](#enhanced-caching) provider.
|
||||||
|
|
||||||
## Debugging and Troubleshooting
|
## Debugging and Troubleshooting
|
||||||
|
|
||||||
To debug a failed job, it can be useful to run with [debug logging enabled](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging).
|
To debug a failed job, it can be useful to run with [debug logging enabled](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging).
|
||||||
@@ -489,7 +541,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
add-job-summary-as-pr-comment: 'on-failure' # Valid values are 'never' (default), 'always', and 'on-failure'
|
add-job-summary-as-pr-comment: 'on-failure' # Valid values are 'never' (default), 'always', and 'on-failure'
|
||||||
|
|
||||||
@@ -526,7 +578,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
|
|
||||||
- name: Run build with Gradle wrapper
|
- name: Run build with Gradle wrapper
|
||||||
run: ./gradlew build --scan
|
run: ./gradlew build --scan
|
||||||
@@ -557,7 +609,7 @@ If you do not want wrapper-validation to occur automatically, you can disable it
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
validate-wrappers: false
|
validate-wrappers: false
|
||||||
```
|
```
|
||||||
@@ -569,7 +621,7 @@ These are not allowed by default.
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
validate-wrappers: true
|
validate-wrappers: true
|
||||||
allow-snapshot-wrappers: true
|
allow-snapshot-wrappers: true
|
||||||
@@ -634,7 +686,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle to generate and submit dependency graphs
|
- name: Setup Gradle to generate and submit dependency graphs
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: generate-and-submit
|
dependency-graph: generate-and-submit
|
||||||
- name: Run the usual CI build (dependency-graph will be generated and submitted post-job)
|
- name: Run the usual CI build (dependency-graph will be generated and submitted post-job)
|
||||||
@@ -661,7 +713,7 @@ graph cannot be generated or submitted. You can enable this behavior with the `d
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Ensure that the workflow Job will fail if the dependency graph cannot be submitted
|
# Ensure that the workflow Job will fail if the dependency graph cannot be submitted
|
||||||
- uses: gradle/actions/setup-gradle@v5
|
- uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: generate-and-submit
|
dependency-graph: generate-and-submit
|
||||||
dependency-graph-continue-on-failure: false
|
dependency-graph-continue-on-failure: false
|
||||||
@@ -686,7 +738,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle to generate and submit dependency graphs
|
- name: Setup Gradle to generate and submit dependency graphs
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: generate-and-submit
|
dependency-graph: generate-and-submit
|
||||||
- name: Run a build, resolving the 'dependency-graph' plugin from the plugin portal proxy
|
- name: Run a build, resolving the 'dependency-graph' plugin from the plugin portal proxy
|
||||||
@@ -716,7 +768,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle to generate and submit dependency graphs
|
- name: Setup Gradle to generate and submit dependency graphs
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
dependency-graph: generate-and-submit
|
dependency-graph: generate-and-submit
|
||||||
- name: Build the app, generating a graph of dependencies required
|
- name: Build the app, generating a graph of dependencies required
|
||||||
@@ -760,7 +812,7 @@ To publish to https://scans.gradle.com, you must specify in your workflow that y
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle to publish build scans
|
- name: Setup Gradle to publish build scans
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
build-scan-publish: true
|
build-scan-publish: true
|
||||||
build-scan-terms-of-use-url: 'https://gradle.com/terms-of-service'
|
build-scan-terms-of-use-url: 'https://gradle.com/terms-of-service'
|
||||||
@@ -782,7 +834,7 @@ The short-lived access token will then be used wherever a Develocity access key
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
develocity-access-key: ${{ secrets.MY_DEVELOCITY_ACCESS_KEY }} # Long-lived access key, visiblility is restricted to this step.
|
develocity-access-key: ${{ secrets.MY_DEVELOCITY_ACCESS_KEY }} # Long-lived access key, visiblility is restricted to this step.
|
||||||
|
|
||||||
@@ -800,7 +852,7 @@ To avoid this, use the `develocity-token-expiry` parameter to specify a differen
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
develocity-access-key: ${{ secrets.MY_DEVELOCITY_ACCESS_KEY }}
|
develocity-access-key: ${{ secrets.MY_DEVELOCITY_ACCESS_KEY }}
|
||||||
develocity-token-expiry: '8' # The number of hours that the access token should remain valid (max 24).
|
develocity-token-expiry: '8' # The number of hours that the access token should remain valid (max 24).
|
||||||
@@ -822,7 +874,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
|
|
||||||
# The build will automatically use a short-lived access token to authenticate with Develocity
|
# The build will automatically use a short-lived access token to authenticate with Develocity
|
||||||
- name: Run a Gradle build that is configured to publish to Develocity.
|
- name: Run a Gradle build that is configured to publish to Develocity.
|
||||||
@@ -854,7 +906,7 @@ Here's a minimal example:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
develocity-injection-enabled: true
|
develocity-injection-enabled: true
|
||||||
develocity-url: 'https://develocity.your-server.com'
|
develocity-url: 'https://develocity.your-server.com'
|
||||||
@@ -871,7 +923,7 @@ In the likely scenario that your Develocity server requires authentication, you
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
with:
|
with:
|
||||||
develocity-access-key: ${{ secrets.MY_DEVELOCITY_ACCESS_KEY }}
|
develocity-access-key: ${{ secrets.MY_DEVELOCITY_ACCESS_KEY }}
|
||||||
|
|
||||||
@@ -922,7 +974,7 @@ Here's an example using the env vars:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
|
|
||||||
- name: Run a Gradle build with Develocity injection enabled with environment variables
|
- name: Run a Gradle build with Develocity injection enabled with environment variables
|
||||||
run: ./gradlew build
|
run: ./gradlew build
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ We created an example [Homoglyph attack PR here](https://github.com/JLLeitschuh/
|
|||||||
Simply add this action to your workflow **after** having checked out your source tree and **before** running any Gradle build:
|
Simply add this action to your workflow **after** having checked out your source tree and **before** running any Gradle build:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
uses: gradle/actions/wrapper-validation@v5
|
uses: gradle/actions/wrapper-validation@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
This action step should precede any step using `gradle/gradle-build-action` or `gradle/actions/setup-gradle`.
|
This action step should precede any step using `gradle/gradle-build-action` or `gradle/actions/setup-gradle`.
|
||||||
@@ -73,7 +73,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- uses: gradle/actions/wrapper-validation@v5
|
- uses: gradle/actions/wrapper-validation@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributing to an external GitHub Repository
|
## Contributing to an external GitHub Repository
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: 17
|
java-version: 17
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v5
|
uses: gradle/actions/setup-gradle@v6
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew build
|
run: ./gradlew build
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -4,6 +4,12 @@ inputs:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
# Cache configuration
|
# Cache configuration
|
||||||
|
cache-provider:
|
||||||
|
type: enum
|
||||||
|
allowed-values:
|
||||||
|
- basic
|
||||||
|
- enhanced
|
||||||
|
|
||||||
cache-disabled:
|
cache-disabled:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,14 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
|
|
||||||
# Cache configuration
|
# Cache configuration
|
||||||
|
cache-provider:
|
||||||
|
description: |
|
||||||
|
Specifies the caching implementation to use.
|
||||||
|
'enhanced' (default) uses the full-featured commercial caching service (gradle-actions-caching).
|
||||||
|
'basic' uses a simple open-source caching implementation based on GitHub Actions cache.
|
||||||
|
required: false
|
||||||
|
default: 'enhanced'
|
||||||
|
|
||||||
cache-disabled:
|
cache-disabled:
|
||||||
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
Generated
+286
-465
File diff suppressed because it is too large
Load Diff
@@ -57,16 +57,16 @@
|
|||||||
"@types/semver": "7.7.1",
|
"@types/semver": "7.7.1",
|
||||||
"@types/unzipper": "0.10.11",
|
"@types/unzipper": "0.10.11",
|
||||||
"@types/which": "3.0.4",
|
"@types/which": "3.0.4",
|
||||||
"@typescript-eslint/eslint-plugin": "8.57.2",
|
"@typescript-eslint/eslint-plugin": "8.58.0",
|
||||||
"dedent": "1.7.2",
|
"dedent": "1.7.2",
|
||||||
"esbuild": "0.27.4",
|
"esbuild": "0.28.0",
|
||||||
"eslint": "10.1.0",
|
"eslint": "10.1.0",
|
||||||
"globals": "17.4.0",
|
"globals": "17.4.0",
|
||||||
"jest": "30.3.0",
|
"jest": "30.3.0",
|
||||||
"nock": "15.0.0",
|
"nock": "15.0.0",
|
||||||
"npm-run-all": "4.1.5",
|
"npm-run-all": "4.1.5",
|
||||||
"prettier": "3.8.1",
|
"prettier": "3.8.1",
|
||||||
"ts-jest": "29.4.6",
|
"ts-jest": "29.4.9",
|
||||||
"typescript": "5.9.3"
|
"typescript": "5.9.3"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
import * as cache from '@actions/cache'
|
||||||
|
import * as core from '@actions/core'
|
||||||
|
import * as glob from '@actions/glob'
|
||||||
|
import * as path from 'path'
|
||||||
|
|
||||||
|
import {BuildResult} from './build-results'
|
||||||
|
import {CacheOptions, CacheService} from './cache-service'
|
||||||
|
|
||||||
|
const PRIMARY_KEY_STATE = 'BASIC_CACHE_PRIMARY_KEY'
|
||||||
|
const RESTORED_KEY_STATE = 'BASIC_CACHE_RESTORED_KEY'
|
||||||
|
const CACHE_KEY_PREFIX = 'setup-java'
|
||||||
|
|
||||||
|
const GRADLE_BUILD_FILE_PATTERNS = [
|
||||||
|
'**/*.gradle*',
|
||||||
|
'**/gradle-wrapper.properties',
|
||||||
|
'buildSrc/**/Versions.kt',
|
||||||
|
'buildSrc/**/Dependencies.kt',
|
||||||
|
'gradle/*.versions.toml',
|
||||||
|
'**/versions.properties'
|
||||||
|
]
|
||||||
|
|
||||||
|
export class BasicCacheService implements CacheService {
|
||||||
|
async restore(gradleUserHome: string, _cacheOptions: CacheOptions): Promise<void> {
|
||||||
|
const cachePaths = getCachePaths(gradleUserHome)
|
||||||
|
const primaryKey = await computeCacheKey()
|
||||||
|
core.saveState(PRIMARY_KEY_STATE, primaryKey)
|
||||||
|
|
||||||
|
// No "restoreKeys" is set, to start with a clear cache after dependency update
|
||||||
|
// See https://github.com/actions/setup-java/issues/269
|
||||||
|
try {
|
||||||
|
const restoredKey = await cache.restoreCache(cachePaths, primaryKey)
|
||||||
|
if (restoredKey) {
|
||||||
|
core.saveState(RESTORED_KEY_STATE, restoredKey)
|
||||||
|
core.info(`Basic caching restored from cache key: ${restoredKey}`)
|
||||||
|
} else {
|
||||||
|
core.info('Basic caching did not find an entry to restore. Will start with empty state.')
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
core.warning(`Basic caching failed to restore from cache: ${error}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async save(gradleUserHome: string, _buildResults: BuildResult[], cacheOptions: CacheOptions): Promise<string> {
|
||||||
|
if (cacheOptions.readOnly) {
|
||||||
|
const restoredKey = core.getState(RESTORED_KEY_STATE)
|
||||||
|
if (restoredKey) {
|
||||||
|
return `Basic caching was read-only. Restored from cache key \`${restoredKey}\`.`
|
||||||
|
}
|
||||||
|
return 'Basic caching was read-only. No cache entry was found to restore.'
|
||||||
|
}
|
||||||
|
|
||||||
|
const primaryKey = core.getState(PRIMARY_KEY_STATE)
|
||||||
|
const restoredKey = core.getState(RESTORED_KEY_STATE)
|
||||||
|
|
||||||
|
if (restoredKey === primaryKey) {
|
||||||
|
core.info(`Basic caching restored entry with key \`${primaryKey}\`. Save was skipped.`)
|
||||||
|
return `Basic caching restored entry with key \`${primaryKey}\`. Save was skipped.`
|
||||||
|
}
|
||||||
|
|
||||||
|
const cachePaths = getCachePaths(gradleUserHome)
|
||||||
|
|
||||||
|
try {
|
||||||
|
await cache.saveCache(cachePaths, primaryKey)
|
||||||
|
core.info(`Basic caching saved entry with key: ${primaryKey}`)
|
||||||
|
return `Basic caching saved entry with key \`${primaryKey}\`.`
|
||||||
|
} catch (error) {
|
||||||
|
core.warning(`Basic caching failed to save entry with key \`${primaryKey}\`: ${error}`)
|
||||||
|
return `Basic caching save failed: ${error}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCachePaths(gradleUserHome: string): string[] {
|
||||||
|
return [path.join(gradleUserHome, 'caches'), path.join(gradleUserHome, 'wrapper')]
|
||||||
|
}
|
||||||
|
|
||||||
|
async function computeCacheKey(): Promise<string> {
|
||||||
|
const fileHash = await glob.hashFiles(GRADLE_BUILD_FILE_PATTERNS.join('\n'))
|
||||||
|
if (!fileHash) {
|
||||||
|
throw new Error(
|
||||||
|
`No file in ${process.cwd()} matched to [${GRADLE_BUILD_FILE_PATTERNS}], make sure you have checked out the target repository`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return `${CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${process.arch}-gradle-${fileHash}`
|
||||||
|
}
|
||||||
@@ -2,7 +2,8 @@ import * as fs from 'fs'
|
|||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import {pathToFileURL} from 'url'
|
import {pathToFileURL} from 'url'
|
||||||
|
|
||||||
import {CacheConfig} from './configuration'
|
import {CacheConfig, CacheProvider} from './configuration'
|
||||||
|
import {BasicCacheService} from './cache-service-basic'
|
||||||
import {BuildResult} from './build-results'
|
import {BuildResult} from './build-results'
|
||||||
import {CacheOptions, CacheService} from './cache-service'
|
import {CacheOptions, CacheService} from './cache-service'
|
||||||
|
|
||||||
@@ -10,36 +11,24 @@ const NOOP_CACHING_REPORT = `
|
|||||||
[Cache was disabled](https://github.com/gradle/actions/blob/main/docs/setup-gradle.md#disabling-caching). Gradle User Home was not restored from or saved to the cache.
|
[Cache was disabled](https://github.com/gradle/actions/blob/main/docs/setup-gradle.md#disabling-caching). Gradle User Home was not restored from or saved to the cache.
|
||||||
`
|
`
|
||||||
|
|
||||||
const CACHE_LICENSE_WARNING = `
|
const ENHANCED_CACHE_MESSAGE = `Enhanced Caching: This build is using the proprietary 'gradle-actions-caching' provider for optimized caching support. See https://github.com/gradle/actions/blob/main/DISTRIBUTION.md for terms of use and opt-out instructions.`
|
||||||
***********************************************************
|
|
||||||
LICENSING NOTICE
|
|
||||||
|
|
||||||
The caching functionality in \`gradle-actions\` has been extracted into \`gradle-actions-caching\`, a proprietary commercial component that is not covered by the MIT License.
|
const ENHANCED_CACHE_SUMMARY = `
|
||||||
The bundled \`gradle-actions-caching\` component is licensed and governed by a separate license, available at https://gradle.com/legal/terms-of-use/.
|
> [!NOTE]
|
||||||
|
> ### ⚡️ Enhanced Caching enabled
|
||||||
The \`gradle-actions-caching\` component is used only when caching is enabled and is not loaded or used when caching is disabled.
|
> This build provides optimized caching support via the proprietary **gradle-actions-caching** provider.
|
||||||
|
> See [DISTRIBUTION.md](https://github.com/gradle/actions/blob/main/DISTRIBUTION.md) for terms of use and opt-out instructions.
|
||||||
Use of the \`gradle-actions-caching\` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
If you do not agree to these license terms, do not use the \`gradle-actions-caching\` component.
|
|
||||||
|
|
||||||
You can suppress this message by accepting the terms in your action configuration: see https://github.com/gradle/actions/blob/main/README.md
|
|
||||||
***********************************************************
|
|
||||||
`
|
`
|
||||||
|
|
||||||
const CACHE_LICENSE_SUMMARY = `
|
const BASIC_CACHE_MESSAGE = `Basic Caching: This build uses the open-source caching provider for reliable, path-based caching of Gradle dependencies. Upgrade available: for faster builds and advanced features, consider switching to the Enhanced Caching provider. See https://github.com/gradle/actions/blob/main/DISTRIBUTION.md for details.`
|
||||||
> [!IMPORTANT]
|
|
||||||
> #### Licensing notice
|
const BASIC_CACHE_SUMMARY = `
|
||||||
|
> [!NOTE]
|
||||||
|
> ### 🛡️ Basic Caching enabled
|
||||||
|
> This build uses the open-source caching provider for reliable, path-based caching of Gradle dependencies.
|
||||||
>
|
>
|
||||||
> The caching functionality in \`gradle-actions\` has been extracted into \`gradle-actions-caching\`, a proprietary commercial component that is not covered by the MIT License.
|
> **Upgrade Available:** For faster builds and advanced features, consider switching to the **Enhanced Caching** provider.
|
||||||
> The bundled \`gradle-actions-caching\` component is licensed and governed by a separate license, available at https://gradle.com/legal/terms-of-use/.
|
> See [DISTRIBUTION.md](https://github.com/gradle/actions/blob/main/DISTRIBUTION.md) for details.`
|
||||||
>
|
|
||||||
> The \`gradle-actions-caching\` component is used only when caching is enabled and is not loaded or used when caching is disabled.
|
|
||||||
>
|
|
||||||
> Use of the \`gradle-actions-caching\` component is subject to a separate license, available at https://gradle.com/legal/terms-of-use/.
|
|
||||||
> If you do not agree to these license terms, do not use the \`gradle-actions-caching\` component.
|
|
||||||
>
|
|
||||||
>You can suppress this message by [accepting the terms in your action configuration](https://github.com/gradle/actions/blob/main/README.md).
|
|
||||||
`
|
|
||||||
|
|
||||||
class NoOpCacheService implements CacheService {
|
class NoOpCacheService implements CacheService {
|
||||||
async restore(_gradleUserHome: string, _cacheOptions: CacheOptions): Promise<void> {
|
async restore(_gradleUserHome: string, _cacheOptions: CacheOptions): Promise<void> {
|
||||||
@@ -53,9 +42,11 @@ class NoOpCacheService implements CacheService {
|
|||||||
|
|
||||||
class LicenseWarningCacheService implements CacheService {
|
class LicenseWarningCacheService implements CacheService {
|
||||||
private delegate: CacheService
|
private delegate: CacheService
|
||||||
|
private summary: string
|
||||||
|
|
||||||
constructor(delegate: CacheService) {
|
constructor(delegate: CacheService, summary: string) {
|
||||||
this.delegate = delegate
|
this.delegate = delegate
|
||||||
|
this.summary = summary
|
||||||
}
|
}
|
||||||
|
|
||||||
async restore(gradleUserHome: string, cacheOptions: CacheOptions): Promise<void> {
|
async restore(gradleUserHome: string, cacheOptions: CacheOptions): Promise<void> {
|
||||||
@@ -64,22 +55,28 @@ class LicenseWarningCacheService implements CacheService {
|
|||||||
|
|
||||||
async save(gradleUserHome: string, buildResults: BuildResult[], cacheOptions: CacheOptions): Promise<string> {
|
async save(gradleUserHome: string, buildResults: BuildResult[], cacheOptions: CacheOptions): Promise<string> {
|
||||||
const cachingReport = await this.delegate.save(gradleUserHome, buildResults, cacheOptions)
|
const cachingReport = await this.delegate.save(gradleUserHome, buildResults, cacheOptions)
|
||||||
return `${cachingReport}\n${CACHE_LICENSE_SUMMARY}`
|
return `${cachingReport}\n${this.summary}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getCacheService(cacheConfig: CacheConfig): Promise<CacheService> {
|
export async function getCacheService(cacheConfig: CacheConfig): Promise<CacheService> {
|
||||||
if (cacheConfig.isCacheDisabled()) {
|
if (cacheConfig.isCacheDisabled()) {
|
||||||
|
logCacheMessage('Cache is disabled: will not restore state from previous builds.')
|
||||||
return new NoOpCacheService()
|
return new NoOpCacheService()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cacheConfig.getCacheProvider() === CacheProvider.Basic) {
|
||||||
|
logCacheMessage(BASIC_CACHE_MESSAGE)
|
||||||
|
return new LicenseWarningCacheService(new BasicCacheService(), BASIC_CACHE_SUMMARY)
|
||||||
|
}
|
||||||
|
|
||||||
|
logCacheMessage(ENHANCED_CACHE_MESSAGE)
|
||||||
const cacheService = await loadVendoredCacheService()
|
const cacheService = await loadVendoredCacheService()
|
||||||
if (cacheConfig.isCacheLicenseAccepted()) {
|
if (cacheConfig.isCacheLicenseAccepted()) {
|
||||||
return cacheService
|
return cacheService
|
||||||
}
|
}
|
||||||
|
|
||||||
await logCacheLicenseWarning()
|
return new LicenseWarningCacheService(cacheService, ENHANCED_CACHE_SUMMARY)
|
||||||
return new LicenseWarningCacheService(cacheService)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loadVendoredCacheService(): Promise<CacheService> {
|
export async function loadVendoredCacheService(): Promise<CacheService> {
|
||||||
@@ -99,6 +96,6 @@ function findVendoredLibraryPath(): string {
|
|||||||
throw new Error(`Unable to locate vendored cache library at ${absolutePath}.`)
|
throw new Error(`Unable to locate vendored cache library at ${absolutePath}.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function logCacheLicenseWarning(): Promise<void> {
|
export function logCacheMessage(message: string): void {
|
||||||
console.info(CACHE_LICENSE_WARNING)
|
console.info(message)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,6 +171,23 @@ export class CacheConfig {
|
|||||||
const dvConfig = new DevelocityConfig()
|
const dvConfig = new DevelocityConfig()
|
||||||
return dvConfig.getDevelocityAccessKey() !== '' || dvConfig.hasTermsOfUseAgreement()
|
return dvConfig.getDevelocityAccessKey() !== '' || dvConfig.hasTermsOfUseAgreement()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getCacheProvider(): CacheProvider {
|
||||||
|
const val = core.getInput('cache-provider')
|
||||||
|
switch (val.toLowerCase().trim()) {
|
||||||
|
case 'basic':
|
||||||
|
return CacheProvider.Basic
|
||||||
|
case 'enhanced':
|
||||||
|
case '':
|
||||||
|
return CacheProvider.Enhanced
|
||||||
|
}
|
||||||
|
throw TypeError(`The value '${val}' is not valid for 'cache-provider'. Valid values are: [basic, enhanced].`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum CacheProvider {
|
||||||
|
Basic = 'basic',
|
||||||
|
Enhanced = 'enhanced'
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum CacheCleanupOption {
|
export enum CacheCleanupOption {
|
||||||
|
|||||||
@@ -0,0 +1,234 @@
|
|||||||
|
import {describe, expect, it, jest, beforeEach} from '@jest/globals'
|
||||||
|
|
||||||
|
// Mock @actions/cache
|
||||||
|
const mockRestoreCache = jest.fn<(paths: string[], primaryKey: string, restoreKeys?: string[]) => Promise<string | undefined>>()
|
||||||
|
const mockSaveCache = jest.fn<(paths: string[], key: string) => Promise<number>>()
|
||||||
|
jest.unstable_mockModule('@actions/cache', () => ({
|
||||||
|
restoreCache: mockRestoreCache,
|
||||||
|
saveCache: mockSaveCache
|
||||||
|
}))
|
||||||
|
|
||||||
|
// Mock @actions/core
|
||||||
|
const mockInfo = jest.fn<(message: string) => void>()
|
||||||
|
const mockWarning = jest.fn<(message: string) => void>()
|
||||||
|
const mockSaveState = jest.fn<(name: string, value: string) => void>()
|
||||||
|
const mockGetState = jest.fn<(name: string) => string>()
|
||||||
|
jest.unstable_mockModule('@actions/core', () => ({
|
||||||
|
info: mockInfo,
|
||||||
|
warning: mockWarning,
|
||||||
|
saveState: mockSaveState,
|
||||||
|
getState: mockGetState
|
||||||
|
}))
|
||||||
|
|
||||||
|
// Mock @actions/glob
|
||||||
|
const mockHashFiles = jest.fn<(pattern: string) => Promise<string>>()
|
||||||
|
jest.unstable_mockModule('@actions/glob', () => ({
|
||||||
|
hashFiles: mockHashFiles
|
||||||
|
}))
|
||||||
|
|
||||||
|
const {BasicCacheService} = await import('../../src/cache-service-basic')
|
||||||
|
|
||||||
|
const HASH = 'abc123def456'
|
||||||
|
const PRIMARY_KEY = `setup-java-Linux-${process.arch}-gradle-${HASH}`
|
||||||
|
|
||||||
|
describe('BasicCacheService', () => {
|
||||||
|
let service: InstanceType<typeof BasicCacheService>
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.clearAllMocks()
|
||||||
|
service = new BasicCacheService()
|
||||||
|
process.env['RUNNER_OS'] = 'Linux'
|
||||||
|
mockHashFiles.mockResolvedValue(HASH)
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('restore', () => {
|
||||||
|
it('restores cache without restoreKeys and saves both keys to state', async () => {
|
||||||
|
mockRestoreCache.mockResolvedValue(PRIMARY_KEY)
|
||||||
|
|
||||||
|
await service.restore('/home/.gradle', {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
// No restoreKeys parameter — exact match only (setup-java#269)
|
||||||
|
expect(mockRestoreCache).toHaveBeenCalledWith(
|
||||||
|
['/home/.gradle/caches', '/home/.gradle/wrapper'],
|
||||||
|
PRIMARY_KEY
|
||||||
|
)
|
||||||
|
expect(mockSaveState).toHaveBeenCalledWith('BASIC_CACHE_PRIMARY_KEY', PRIMARY_KEY)
|
||||||
|
expect(mockSaveState).toHaveBeenCalledWith('BASIC_CACHE_RESTORED_KEY', PRIMARY_KEY)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('saves primary key to state even on cache miss', async () => {
|
||||||
|
mockRestoreCache.mockResolvedValue(undefined)
|
||||||
|
|
||||||
|
await service.restore('/home/.gradle', {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockSaveState).toHaveBeenCalledWith('BASIC_CACHE_PRIMARY_KEY', PRIMARY_KEY)
|
||||||
|
expect(mockSaveState).not.toHaveBeenCalledWith('BASIC_CACHE_RESTORED_KEY', expect.anything())
|
||||||
|
expect(mockInfo).toHaveBeenCalledWith(
|
||||||
|
expect.stringContaining('did not find')
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('warns on restore failure instead of throwing', async () => {
|
||||||
|
mockRestoreCache.mockRejectedValue(new Error('Network error'))
|
||||||
|
|
||||||
|
await service.restore('/home/.gradle', {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockWarning).toHaveBeenCalledWith(
|
||||||
|
expect.stringContaining('failed to restore')
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('throws when no build files are found', async () => {
|
||||||
|
mockHashFiles.mockResolvedValue('')
|
||||||
|
|
||||||
|
await expect(
|
||||||
|
service.restore('/home/.gradle', {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
).rejects.toThrow('No file in')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('save', () => {
|
||||||
|
it('reports readOnly with restored key when cache was hit', async () => {
|
||||||
|
mockGetState.mockReturnValue(PRIMARY_KEY)
|
||||||
|
const report = await service.save('/home/.gradle', [], {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: true,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockSaveCache).not.toHaveBeenCalled()
|
||||||
|
expect(report).toContain('read-only')
|
||||||
|
expect(report).toContain(PRIMARY_KEY)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('reports readOnly with no restore when cache was missed', async () => {
|
||||||
|
mockGetState.mockReturnValue('')
|
||||||
|
const report = await service.save('/home/.gradle', [], {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: true,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockSaveCache).not.toHaveBeenCalled()
|
||||||
|
expect(report).toContain('read-only')
|
||||||
|
expect(report).toContain('No cache entry')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('skips save when restored key equals primary key', async () => {
|
||||||
|
mockGetState.mockImplementation((name: string) => {
|
||||||
|
if (name === 'BASIC_CACHE_PRIMARY_KEY') return PRIMARY_KEY
|
||||||
|
if (name === 'BASIC_CACHE_RESTORED_KEY') return PRIMARY_KEY
|
||||||
|
return ''
|
||||||
|
})
|
||||||
|
|
||||||
|
const report = await service.save('/home/.gradle', [], {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockSaveCache).not.toHaveBeenCalled()
|
||||||
|
expect(report).toContain('Save was skipped')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('saves cache and returns report on success', async () => {
|
||||||
|
mockGetState.mockImplementation((name: string) => {
|
||||||
|
if (name === 'BASIC_CACHE_PRIMARY_KEY') return PRIMARY_KEY
|
||||||
|
return ''
|
||||||
|
})
|
||||||
|
mockSaveCache.mockResolvedValue(0)
|
||||||
|
|
||||||
|
const report = await service.save('/home/.gradle', [], {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockSaveCache).toHaveBeenCalledWith(
|
||||||
|
['/home/.gradle/caches', '/home/.gradle/wrapper'],
|
||||||
|
PRIMARY_KEY
|
||||||
|
)
|
||||||
|
expect(report).toContain('saved entry with key')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('warns on save failure instead of throwing', async () => {
|
||||||
|
mockGetState.mockImplementation((name: string) => {
|
||||||
|
if (name === 'BASIC_CACHE_PRIMARY_KEY') return PRIMARY_KEY
|
||||||
|
return ''
|
||||||
|
})
|
||||||
|
mockSaveCache.mockRejectedValue(new Error('Storage full'))
|
||||||
|
|
||||||
|
const report = await service.save('/home/.gradle', [], {
|
||||||
|
disabled: false,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(mockWarning).toHaveBeenCalledWith(
|
||||||
|
expect.stringContaining('failed to save')
|
||||||
|
)
|
||||||
|
expect(report).toContain('failed')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
import {describe, expect, it, jest, beforeEach} from '@jest/globals'
|
||||||
|
|
||||||
|
import {CacheProvider} from '../../src/configuration'
|
||||||
|
import type {CacheConfig} from '../../src/configuration'
|
||||||
|
|
||||||
|
describe('getCacheService selection logic', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.restoreAllMocks()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns NoOpCacheService when cache is disabled', async () => {
|
||||||
|
const {getCacheService} = await import('../../src/cache-service-loader')
|
||||||
|
const mockConfig = {
|
||||||
|
isCacheDisabled: () => true,
|
||||||
|
getCacheProvider: () => CacheProvider.Enhanced,
|
||||||
|
isCacheLicenseAccepted: () => true
|
||||||
|
} as unknown as CacheConfig
|
||||||
|
|
||||||
|
const service = await getCacheService(mockConfig)
|
||||||
|
const report = await service.save('/home/.gradle', [], {
|
||||||
|
disabled: true,
|
||||||
|
readOnly: false,
|
||||||
|
writeOnly: false,
|
||||||
|
overwriteExisting: false,
|
||||||
|
strictMatch: false,
|
||||||
|
cleanup: 'never',
|
||||||
|
includes: [],
|
||||||
|
excludes: []
|
||||||
|
})
|
||||||
|
|
||||||
|
// NoOpCacheService returns a specific report mentioning cache was disabled
|
||||||
|
expect(report).toContain('Cache was disabled')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('wraps BasicCacheService with LicenseWarningCacheService when cache-provider is basic', async () => {
|
||||||
|
const {getCacheService} = await import('../../src/cache-service-loader')
|
||||||
|
const mockConfig = {
|
||||||
|
isCacheDisabled: () => false,
|
||||||
|
getCacheProvider: () => CacheProvider.Basic,
|
||||||
|
isCacheLicenseAccepted: () => false
|
||||||
|
} as unknown as CacheConfig
|
||||||
|
|
||||||
|
const service = await getCacheService(mockConfig)
|
||||||
|
|
||||||
|
// The service should not be a bare BasicCacheService — it should be wrapped
|
||||||
|
// with LicenseWarningCacheService that appends the basic caching summary
|
||||||
|
const {BasicCacheService} = await import('../../src/cache-service-basic')
|
||||||
|
expect(service).not.toBeInstanceOf(BasicCacheService)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- uses: gradle/actions/wrapper-validation@v5
|
- uses: gradle/actions/wrapper-validation@v6
|
||||||
```
|
```
|
||||||
|
|
||||||
See the [full action documentation](../docs/wrapper-validation.md) for more advanced usage scenarios.
|
See the [full action documentation](../docs/wrapper-validation.md) for more advanced usage scenarios.
|
||||||
|
|||||||
Reference in New Issue
Block a user