mirror of
https://github.com/gradle/gradle-build-action.git
synced 2024-12-26 01:36:19 +08:00
acc77da702
The action requires the generated distribution to committed to the 'dist' directory. During regular development this step causes a number of problems: - It's easy to forget to add/commit these generated files. - It's very difficult/impossible to merge/rebase commits that involve generated files - These file add unnecessary bulk to the git history With this change, the quick-check workflow will first build the distribution and then use the generated output for testing. Building and committing these files will only be required when merging into the 'main' branch.
162 lines
5.0 KiB
YAML
162 lines
5.0 KiB
YAML
name: Test action inputs that control caching
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
cache-key-prefix:
|
|
type: string
|
|
runner-os:
|
|
type: string
|
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
|
download-dist:
|
|
type: boolean
|
|
default: false
|
|
|
|
env:
|
|
DOWNLOAD_DIST: ${{ inputs.download-dist }}
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-caching-${{ inputs.cache-key-prefix }}
|
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
|
|
|
jobs:
|
|
seed-build:
|
|
strategy:
|
|
matrix:
|
|
os: ${{fromJSON(inputs.runner-os)}}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Download distribution if required
|
|
uses: ./.github/actions/download-dist
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
# Add "enterprise" to main cache entry but omit "notifications"
|
|
gradle-home-cache-includes: |
|
|
caches
|
|
enterprise
|
|
# Exclude build-cache from main cache entry
|
|
gradle-home-cache-excludes: |
|
|
caches/build-cache-1
|
|
- name: Build using Gradle wrapper
|
|
working-directory: .github/workflow-samples/groovy-dsl
|
|
run: ./gradlew test
|
|
|
|
# Test that the gradle-user-home cache will cache dependencies, by running build with --offline
|
|
verify-build:
|
|
needs: seed-build
|
|
strategy:
|
|
matrix:
|
|
os: ${{fromJSON(inputs.runner-os)}}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Download distribution if required
|
|
uses: ./.github/actions/download-dist
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
# Use the same configuration as used in the seed build
|
|
gradle-home-cache-includes: |
|
|
caches
|
|
enterprise
|
|
gradle-home-cache-excludes: |
|
|
caches/build-cache-1
|
|
cache-read-only: true
|
|
- name: Execute Gradle build with --offline
|
|
working-directory: .github/workflow-samples/groovy-dsl
|
|
run: ./gradlew test --offline
|
|
|
|
# Test that build scans are captured when caching is explicitly disabled
|
|
cache-disabled:
|
|
strategy:
|
|
matrix:
|
|
os: ${{fromJSON(inputs.runner-os)}}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Download distribution if required
|
|
uses: ./.github/actions/download-dist
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
cache-disabled: true
|
|
- name: Run Gradle build
|
|
id: gradle
|
|
working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
|
|
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
|
- name: Check build scan url is captured
|
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
|
uses: actions/github-script@v3
|
|
with:
|
|
script: |
|
|
core.setFailed('No build scan detected')
|
|
|
|
# Test that build scans are captured when caching is disabled because Gradle User Home already exists
|
|
cache-disabled-pre-existing-gradle-home:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Download distribution if required
|
|
uses: ./.github/actions/download-dist
|
|
- name: Create dummy Gradle User Home
|
|
run: mkdir -p ~/.gradle/caches
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
- name: Run Gradle build
|
|
id: gradle
|
|
working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
|
|
run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}"
|
|
- name: Check build scan url is captured
|
|
if: ${{ !steps.gradle.outputs.build-scan-url }}
|
|
uses: actions/github-script@v3
|
|
with:
|
|
script: |
|
|
core.setFailed('No build scan detected')
|
|
|
|
# Test seed the cache with cache-write-only and verify with cache-read-only
|
|
seed-build-write-only:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only-
|
|
strategy:
|
|
matrix:
|
|
os: ${{fromJSON(inputs.runner-os)}}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Download distribution if required
|
|
uses: ./.github/actions/download-dist
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
cache-write-only: true
|
|
- name: Build using Gradle wrapper
|
|
working-directory: .github/workflow-samples/groovy-dsl
|
|
run: ./gradlew test
|
|
|
|
verify-write-only-build:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only-
|
|
needs: seed-build-write-only
|
|
strategy:
|
|
matrix:
|
|
os: ${{fromJSON(inputs.runner-os)}}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Download distribution if required
|
|
uses: ./.github/actions/download-dist
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
cache-read-only: true
|
|
- name: Execute Gradle build with --offline
|
|
working-directory: .github/workflow-samples/groovy-dsl
|
|
run: ./gradlew test --offline
|
|
|