mirror of
				https://hub.gitmirror.com/https://github.com/gradle/actions.git
				synced 2025-10-31 10:00:01 +08:00 
			
		
		
		
	 fb14e0ee5b
			
		
	
	
		fb14e0ee5b
		
	
	
	
	
		
			
			After the '[bot] update dist directory' commit, we run a full test suite. This will now use the content from the 'dist' directory, rather than regenerating this content in the test.
		
			
				
	
	
		
			175 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Test caching configuration
 | |
| 
 | |
| on:
 | |
|   workflow_call:
 | |
|     inputs:
 | |
|       cache-key-prefix:
 | |
|         type: string
 | |
|       runner-os:
 | |
|         type: string
 | |
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | |
|       skip-dist:
 | |
|         type: boolean
 | |
|         default: false
 | |
| 
 | |
| env:
 | |
|   SKIP_DIST: ${{ inputs.skip-dist }}
 | |
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: caching-config-${{ inputs.cache-key-prefix }}
 | |
| 
 | |
| jobs:
 | |
|   seed-build:
 | |
|     strategy:
 | |
|       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 Gradle
 | |
|       uses: ./setup-gradle
 | |
|       with:
 | |
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | |
|         # Add "application" to main cache entry but omit "notifications"
 | |
|         gradle-home-cache-includes: |
 | |
|             caches
 | |
|             application
 | |
|         # Exclude build-cache from main cache entry
 | |
|         gradle-home-cache-excludes: |
 | |
|             caches/build-cache-*
 | |
|             caches/*/executionHistory
 | |
|     - 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:
 | |
|       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 Gradle
 | |
|       uses: ./setup-gradle
 | |
|       with:
 | |
|         # Use the same configuration as used in the seed build
 | |
|         gradle-home-cache-includes: |
 | |
|             caches
 | |
|             application
 | |
|         gradle-home-cache-excludes: |
 | |
|             caches/build-cache-*
 | |
|             caches/*/executionHistory
 | |
|         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:
 | |
|       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 Gradle
 | |
|       uses: ./setup-gradle
 | |
|       with:
 | |
|         cache-disabled: true
 | |
|     - name: Build using Gradle wrapper
 | |
|       id: gradle
 | |
|       working-directory: .github/workflow-samples/groovy-dsl
 | |
|       run: ./gradlew help
 | |
|     - name: Check Build Scan url is captured
 | |
|       if: ${{ !steps.gradle.outputs.build-scan-url }}
 | |
|       uses: actions/github-script@v7
 | |
|       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 # This test only runs on Ubuntu
 | |
|     steps:
 | |
|     - name: Checkout sources
 | |
|       uses: actions/checkout@v4
 | |
|     - name: Initialize integ-test
 | |
|       uses: ./.github/actions/init-integ-test
 | |
| 
 | |
|     - name: Create dummy Gradle User Home
 | |
|       run: mkdir -p ~/.gradle/caches
 | |
|     - name: Setup Gradle
 | |
|       uses: ./setup-gradle
 | |
|     - name: Build using Gradle wrapper
 | |
|       id: gradle
 | |
|       working-directory: .github/workflow-samples/groovy-dsl
 | |
|       run: ./gradlew help
 | |
|     - name: Check Build Scan url is captured
 | |
|       if: ${{ !steps.gradle.outputs.build-scan-url }}
 | |
|       uses: actions/github-script@v7
 | |
|       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:
 | |
|       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 Gradle
 | |
|       uses: ./setup-gradle
 | |
|       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:
 | |
|       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 Gradle
 | |
|       uses: ./setup-gradle
 | |
|       with:
 | |
|         cache-read-only: true
 | |
|     - name: Execute Gradle build with --offline
 | |
|       working-directory: .github/workflow-samples/groovy-dsl
 | |
|       run: ./gradlew test --offline
 | |
| 
 |