mirror of
https://github.com/gradle/gradle-build-action.git
synced 2024-12-26 02:16:19 +08:00
76ea8a76b2
Instead of using a fallback strategy to locate a configuration-cache entry based on the current job and git SHA, these entries are now keyed based on their file content with the keys persisted in the primary Gradle User Home entry. This removes the chance of having a configuration-cache entry restored that is incompatible with the restored Gradle User Home state, and makes the logic easier to understand. This change involved a fairly major refactor, with the CacheEntryExtractor being split out from the primary cache implementation, and adding a separate extractor implementation for configuration-cache.
83 lines
2.3 KiB
YAML
83 lines
2.3 KiB
YAML
name: Test save/restore Gradle Home directory
|
|
|
|
on:
|
|
pull_request:
|
|
types: [assigned, review_requested]
|
|
push:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-
|
|
|
|
jobs:
|
|
seed-build:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
- name: Build using Gradle wrapper
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test
|
|
|
|
# Test that the gradle-user-home cache will cache dependencies, by running build with --offline
|
|
dependencies-cache:
|
|
needs: seed-build
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
cache-read-only: true
|
|
- name: Execute Gradle build with --offline
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test --offline
|
|
|
|
# Test that the gradle-user-home cache will cache and restore local build-cache
|
|
build-cache:
|
|
needs: seed-build
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
with:
|
|
cache-read-only: true
|
|
- name: Execute Gradle build and verify tasks from cache
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test -DverifyCachedBuild=true
|
|
|
|
# Check that the build can run when Gradle User Home is not fully restored
|
|
no-extracted-cache-entries-restored:
|
|
needs: seed-build
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle with no extracted cache entries restored
|
|
uses: ./
|
|
env:
|
|
GRADLE_BUILD_ACTION_SKIP_RESTORE: "generated-gradle-jars|wrapper-zips|java-toolchains|instrumented-jars|dependencies|kotlin-dsl"
|
|
with:
|
|
cache-read-only: true
|
|
- name: Check executee Gradle build
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test
|
|
|