mirror of
				https://github.com/gradle/gradle-build-action.git
				synced 2025-11-04 09:58:56 +08:00 
			
		
		
		
	Support wildcards in cache-excludes
This commit is contained in:
		@@ -38,7 +38,8 @@ jobs:
 | 
			
		||||
            enterprise
 | 
			
		||||
        # Exclude build-cache from main cache entry
 | 
			
		||||
        gradle-home-cache-excludes: |
 | 
			
		||||
            caches/build-cache-1
 | 
			
		||||
            caches/build-cache-*
 | 
			
		||||
            caches/*/executionHistory/**
 | 
			
		||||
    - name: Build using Gradle wrapper
 | 
			
		||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
			
		||||
      run: ./gradlew test
 | 
			
		||||
@@ -63,7 +64,8 @@ jobs:
 | 
			
		||||
            caches
 | 
			
		||||
            enterprise
 | 
			
		||||
        gradle-home-cache-excludes: |
 | 
			
		||||
            caches/build-cache-1
 | 
			
		||||
            caches/build-cache-*
 | 
			
		||||
            caches/*/executionHistory/**
 | 
			
		||||
        cache-read-only: true
 | 
			
		||||
    - name: Execute Gradle build with --offline
 | 
			
		||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
import * as core from '@actions/core'
 | 
			
		||||
import * as exec from '@actions/exec'
 | 
			
		||||
import * as glob from '@actions/glob'
 | 
			
		||||
 | 
			
		||||
import path from 'path'
 | 
			
		||||
import fs from 'fs'
 | 
			
		||||
import * as params from './input-params'
 | 
			
		||||
@@ -127,7 +129,7 @@ export class GradleStateCache {
 | 
			
		||||
     */
 | 
			
		||||
    async beforeSave(listener: CacheListener): Promise<void> {
 | 
			
		||||
        await this.debugReportGradleUserHomeSize('before saving common artifacts')
 | 
			
		||||
        this.deleteExcludedPaths()
 | 
			
		||||
        await this.deleteExcludedPaths()
 | 
			
		||||
        await Promise.all([
 | 
			
		||||
            new GradleHomeEntryExtractor(this.gradleUserHome).extract(listener)
 | 
			
		||||
            // new ConfigurationCacheEntryExtractor(this.gradleUserHome).extract(listener)
 | 
			
		||||
@@ -140,13 +142,21 @@ export class GradleStateCache {
 | 
			
		||||
    /**
 | 
			
		||||
     * Delete any file paths that are excluded by the `gradle-home-cache-excludes` parameter.
 | 
			
		||||
     */
 | 
			
		||||
    private deleteExcludedPaths(): void {
 | 
			
		||||
    private async deleteExcludedPaths(): Promise<void> {
 | 
			
		||||
        const rawPaths: string[] = params.getCacheExcludes()
 | 
			
		||||
        // rawPaths.push('caches/*/cc-keystore')
 | 
			
		||||
        const resolvedPaths = rawPaths.map(x => path.resolve(this.gradleUserHome, x))
 | 
			
		||||
 | 
			
		||||
        for (const p of resolvedPaths) {
 | 
			
		||||
            cacheDebug(`Deleting excluded path: ${p}`)
 | 
			
		||||
            tryDelete(p)
 | 
			
		||||
            cacheDebug(`Removing excluded path: ${p}`)
 | 
			
		||||
            const globber = await glob.create(p, {
 | 
			
		||||
                implicitDescendants: false
 | 
			
		||||
            })
 | 
			
		||||
 | 
			
		||||
            for (const toDelete of await globber.glob()) {
 | 
			
		||||
                cacheDebug(`Removing excluded file: ${toDelete}`)
 | 
			
		||||
                await tryDelete(toDelete)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user