mirror of
https://github.com/gradle/gradle-build-action.git
synced 2024-12-25 16:06:18 +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.
128 lines
4.0 KiB
YAML
128 lines
4.0 KiB
YAML
name: Test save/restore configuration-cache state
|
|
|
|
on:
|
|
pull_request:
|
|
types: [assigned, review_requested]
|
|
push:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
|
|
|
jobs:
|
|
# Run initial Gradle builds to push initial cache entries
|
|
# These builds should start fresh without cache hits, due to the seed injected into the cache key above.
|
|
seed-build-groovy:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-groovy-
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
- name: Groovy build with configuration-cache enabled
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test --configuration-cache
|
|
|
|
configuration-cache-groovy:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-groovy-
|
|
needs: seed-build-groovy
|
|
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 cached configuration
|
|
env:
|
|
VERIFY_CACHED_CONFIGURATION: true
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test --configuration-cache
|
|
|
|
# Check that the build can run when no extracted cache entries are restored
|
|
no-extracted-cache-entries-restored:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-groovy-
|
|
needs: seed-build-groovy
|
|
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 execute Gradle build with configuration cache enabled (but not restored)
|
|
working-directory: __tests__/samples/groovy-dsl
|
|
run: ./gradlew test --configuration-cache
|
|
|
|
seed-build-kotlin:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-kotlin-
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
- name: Kotlin build with configuration-cache enabled
|
|
working-directory: __tests__/samples/kotlin-dsl
|
|
run: ./gradlew help --configuration-cache
|
|
|
|
modify-build-kotlin:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-kotlin-
|
|
needs: seed-build-kotlin
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Setup Gradle
|
|
uses: ./
|
|
- name: Kotlin build with configuration-cache enabled
|
|
working-directory: __tests__/samples/kotlin-dsl
|
|
run: ./gradlew test --configuration-cache
|
|
|
|
# Test restore configuration-cache from the third build invocation
|
|
configuration-cache-kotlin:
|
|
env:
|
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-kotlin-
|
|
needs: modify-build-kotlin
|
|
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 cached configuration
|
|
env:
|
|
VERIFY_CACHED_CONFIGURATION: true
|
|
working-directory: __tests__/samples/kotlin-dsl
|
|
run: ./gradlew test --configuration-cache
|