name: Test restore configuration-cache 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: restore-configuration-cache-${{ inputs.cache-key-prefix }} GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true jobs: seed-build-groovy: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy strategy: matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Download distribution if required uses: ./.github/actions/download-dist - name: Setup Gradle uses: ./ with: cache-read-only: false # For testing, allow writing cache entries on non-default branches - name: Groovy build with configuration-cache enabled working-directory: .github/workflow-samples/groovy-dsl run: ./gradlew test --configuration-cache verify-build-groovy: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy needs: seed-build-groovy strategy: matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Download distribution if required uses: ./.github/actions/download-dist - name: Setup Gradle uses: ./ with: cache-read-only: true - name: Groovy build with configuration-cache enabled id: execute working-directory: .github/workflow-samples/groovy-dsl run: ./gradlew test --configuration-cache - name: Check that configuration-cache was used uses: actions/github-script@v7 with: script: | const fs = require('fs') if (fs.existsSync('.github/workflow-samples/groovy-dsl/task-configured.txt')) { core.setFailed('Configuration cache was not used - task was configured unexpectedly') } # Check that the build can run when no extracted cache entries are restored gradle-user-home-not-fully-restored: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy needs: seed-build-groovy strategy: matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Download distribution if required uses: ./.github/actions/download-dist - 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: .github/workflow-samples/groovy-dsl run: ./gradlew test --configuration-cache seed-build-kotlin: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin strategy: matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Download distribution if required uses: ./.github/actions/download-dist - name: Setup Gradle uses: ./ with: cache-read-only: false # For testing, allow writing cache entries on non-default branches - name: Execute 'help' with configuration-cache enabled working-directory: .github/workflow-samples/kotlin-dsl run: ./gradlew help --configuration-cache modify-build-kotlin: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified needs: seed-build-kotlin strategy: matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Download distribution if required uses: ./.github/actions/download-dist - name: Setup Gradle uses: ./ with: cache-read-only: false # For testing, allow writing cache entries on non-default branches - name: Execute 'test' with configuration-cache enabled working-directory: .github/workflow-samples/kotlin-dsl run: ./gradlew test --configuration-cache # Test restore configuration-cache from the third build invocation verify-build-kotlin: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified needs: modify-build-kotlin strategy: matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Download distribution if required uses: ./.github/actions/download-dist - name: Setup Gradle uses: ./ with: cache-read-only: true - name: Execute 'test' again with configuration-cache enabled id: execute working-directory: .github/workflow-samples/kotlin-dsl run: ./gradlew test --configuration-cache - name: Check that configuration-cache was used uses: actions/github-script@v7 with: script: | const fs = require('fs') if (fs.existsSync('.github/workflow-samples/kotlin-dsl/task-configured.txt')) { core.setFailed('Configuration cache was not used - task was configured unexpectedly') }