name: Test restore configuration-cache on: workflow_call: inputs: cache-key-prefix: type: string default: '0' runner-os: type: string default: '["ubuntu-latest"]' skip-dist: type: boolean default: false secrets: GRADLE_ENCRYPTION_KEY: required: true env: SKIP_DIST: ${{ inputs.skip-dist }} GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-configuration-cache-${{ inputs.cache-key-prefix }} jobs: restore-cc-seed-build-groovy: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle uses: ./setup-gradle with: cache-read-only: false # For testing, allow writing cache entries on non-default branches cache-write-only: true # Ensure we start with a clean cache entry cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Groovy build with configuration-cache enabled working-directory: .github/workflow-samples/groovy-dsl run: gradle test --configuration-cache restore-cc-verify-build-groovy: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_1 needs: restore-cc-seed-build-groovy strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle uses: ./setup-gradle with: cache-read-only: false cache-cleanup: on-success cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Groovy build with configuration-cache enabled id: execute working-directory: .github/workflow-samples/groovy-dsl run: gradle test --configuration-cache - name: Verify configuration-cache hit shell: bash run: | if [ -e ".github/workflow-samples/groovy-dsl/task-configured.txt" ]; then echo "Configuration cache was not used - task was configured unexpectedly" exit 1 fi # Ensure that cache-cleanup doesn't remove all necessary files restore-cc-verify-no-cache-cleanup-groovy: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_2 needs: restore-cc-verify-build-groovy strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle uses: ./setup-gradle with: cache-read-only: true cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Groovy build with configuration-cache enabled id: execute working-directory: .github/workflow-samples/groovy-dsl run: gradle test --configuration-cache - name: Verify configuration-cache hit shell: bash run: | if [ -e ".github/workflow-samples/groovy-dsl/task-configured.txt" ]; then echo "Configuration cache was not used - task was configured unexpectedly" exit 1 fi # Check that the build can run when no extracted cache entries are restored restore-cc-gradle-user-home-not-fully-restored: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_x needs: restore-cc-seed-build-groovy strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle with no extracted cache entries restored uses: ./setup-gradle env: GRADLE_BUILD_ACTION_SKIP_RESTORE: "generated-gradle-jars|wrapper-zips|java-toolchains|instrumented-jars|dependencies|kotlin-dsl" with: cache-read-only: true cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Check execute Gradle build with configuration cache enabled (but not restored) working-directory: .github/workflow-samples/groovy-dsl run: gradle test --configuration-cache restore-cc-seed-build-kotlin: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle uses: ./setup-gradle with: cache-read-only: false # For testing, allow writing cache entries on non-default branches cache-write-only: true # Ensure we start with a clean cache entry cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Execute 'help' with configuration-cache enabled working-directory: .github/workflow-samples/kotlin-dsl run: gradle help --configuration-cache restore-cc-modify-build-kotlin: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_1 needs: restore-cc-seed-build-kotlin strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle uses: ./setup-gradle with: cache-read-only: false # For testing, allow writing cache entries on non-default branches cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Execute 'test' with configuration-cache enabled working-directory: .github/workflow-samples/kotlin-dsl run: gradle test --configuration-cache # Test restore configuration-cache from the third build invocation restore-cc-verify-build-kotlin: env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_2 needs: restore-cc-modify-build-kotlin strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Setup Java to ensure consistency uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: 17 - name: Setup Gradle uses: ./setup-gradle with: cache-read-only: true cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} gradle-version: 8.6 - name: Execute 'test' again with configuration-cache enabled id: execute working-directory: .github/workflow-samples/kotlin-dsl run: gradle test --configuration-cache - name: Verify configuration-cache hit shell: bash run: | if [ -e ".github/workflow-samples/kotlin-dsl/task-configured.txt" ]; then echo "Configuration cache was not used - task was configured unexpectedly" exit 1 fi