mirror of
				https://github.com/gradle/gradle-build-action.git
				synced 2025-10-31 07:08:56 +08:00 
			
		
		
		
	Allow cache-exclude-paths to be configured for action
All excluded paths are deleted prior to caching the Gradle User Home.
This commit is contained in:
		
							
								
								
									
										16
									
								
								action.yml
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								action.yml
									
									
									
									
									
								
							| @@ -7,25 +7,30 @@ inputs: | ||||
|   gradle-executable: | ||||
|     description: Path to the Gradle executable | ||||
|     required: false | ||||
|  | ||||
|   gradle-version: | ||||
|     description: Gradle version to use | ||||
|     required: false | ||||
|  | ||||
|   build-root-directory: | ||||
|     description: Path to the root directory of the build | ||||
|     required: false | ||||
|  | ||||
|   arguments: | ||||
|     description: Gradle command line arguments (supports multi-line input) | ||||
|     required: false | ||||
|  | ||||
|   cache-disabled: | ||||
|     description: When 'true', all caching is disabled. No entries will be written to or read from the cache. | ||||
|     required: false | ||||
|     default: false | ||||
|  | ||||
|   cache-read-only: | ||||
|     description: When 'true', existing entries will be read from the cache but no entries will be written | ||||
|     required: false | ||||
|     # TODO: It might be useful to default to read-only for PRs, or non-main branch. | ||||
|     default: false  | ||||
|    | ||||
|  | ||||
|  | ||||
|   # EXPERIMENTAL & INTERNAL CONFIGURATION PROPERTIES | ||||
|   # The following action properties allow fine-grained tweaking of the action caching behaviour. | ||||
| @@ -35,11 +40,20 @@ inputs: | ||||
|     description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users (INTERNAL). | ||||
|     required: false | ||||
|     default: ${{ toJSON(matrix) }} | ||||
|  | ||||
|   cache-paths: | ||||
|     description: Paths in Gradle User Home to cache. (EXPERIMENTAL - may be changed/removed without notice) | ||||
|     required: false | ||||
|     default: | | ||||
|         ["caches", "notifications"] | ||||
|  | ||||
|   cache-exclude-paths: | ||||
|     description: Paths in Gradle User Home to exclude from cache. (EXPERIMENTAL - may be changed/removed without notice) | ||||
|     required: false | ||||
|     # eg ["caches/build-cache-1"] will prevent the local build cache from being saved/restored.  | ||||
|     default: | | ||||
|         []  | ||||
|  | ||||
|   cache-artifact-bundles: | ||||
|     description: Names and patterns of artifact bundles to cache separately. (EXPERIMENTAL - may be changed/removed without notice) | ||||
|     required: false | ||||
|   | ||||
| @@ -74,12 +74,27 @@ export class GradleUserHomeCache extends AbstractCache { | ||||
|  | ||||
|     async beforeSave(): Promise<void> { | ||||
|         await this.reportGradleUserHomeSize('before saving common artifacts') | ||||
|         this.removeExcludedPaths() | ||||
|         await this.saveArtifactBundles() | ||||
|         await this.reportGradleUserHomeSize( | ||||
|             'after saving common artifacts (./wrapper dir is not cached)' | ||||
|             "after saving common artifacts (only 'caches' and 'notifications' will be stored)" | ||||
|         ) | ||||
|     } | ||||
|  | ||||
|     private removeExcludedPaths(): void { | ||||
|         const rawPaths: string[] = JSON.parse( | ||||
|             core.getInput('cache-exclude-paths') | ||||
|         ) | ||||
|         const resolvedPaths = rawPaths.map(x => | ||||
|             path.resolve(this.gradleUserHome, x) | ||||
|         ) | ||||
|  | ||||
|         for (const p of resolvedPaths) { | ||||
|             this.debug(`Deleting excluded path: ${p}`) | ||||
|             tryDelete(p) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async saveArtifactBundles(): Promise<void> { | ||||
|         const processes: Promise<void>[] = [] | ||||
|         for (const [bundle, pattern] of this.getArtifactBundles()) { | ||||
| @@ -177,9 +192,7 @@ export class GradleUserHomeCache extends AbstractCache { | ||||
|     private resolveCachePath(rawPath: string): string { | ||||
|         if (rawPath.startsWith('!')) { | ||||
|             const resolved = this.resolveCachePath(rawPath.substring(1)) | ||||
|             const negated = `!${resolved}` | ||||
|             this.debug(`Negate cache path: ${negated}`) | ||||
|             return negated | ||||
|             return `!${resolved}` | ||||
|         } | ||||
|         return path.resolve(this.gradleUserHome, rawPath) | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user