diff --git a/action.yml b/action.yml index f506dee..7101643 100644 --- a/action.yml +++ b/action.yml @@ -48,8 +48,12 @@ inputs: # EXPERIMENTAL & INTERNAL ACTION INPUTS # The following action properties allow fine-grained tweaking of the action caching behaviour. - # These properties are not designed for production use, and may change without notice in a subsequent release of `gradle-build-action`. + # These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `gradle-build-action`. # Use at your own risk! + gradle-home-cache-strict-match: + description: When 'true', the action will not attempt to restore the Gradle User Home entries from other Jobs. + required: false + default: false workflow-job-context: 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 diff --git a/src/cache-base.ts b/src/cache-base.ts index e0200fe..4f73821 100644 --- a/src/cache-base.ts +++ b/src/cache-base.ts @@ -15,12 +15,13 @@ import { } from './cache-utils' import {ConfigurationCacheEntryExtractor, GradleHomeEntryExtractor} from './cache-extract-entries' -const CACHE_PROTOCOL_VERSION = 'v5-' +const CACHE_PROTOCOL_VERSION = 'v6-' export const META_FILE_DIR = '.gradle-build-action' export const PROJECT_ROOTS_FILE = 'project-roots.txt' const INCLUDE_PATHS_PARAMETER = 'gradle-home-cache-includes' const EXCLUDE_PATHS_PARAMETER = 'gradle-home-cache-excludes' +const STRICT_CACHE_MATCH_PARAMETER = 'gradle-home-cache-strict-match' /** * Represents a key used to restore a cache entry. @@ -70,6 +71,10 @@ function generateCacheKey(cacheName: string): CacheKey { // Exact match on Git SHA const cacheKey = `${cacheKeyForJobContext}-${github.context.sha}` + if (core.getBooleanInput(STRICT_CACHE_MATCH_PARAMETER)) { + return new CacheKey(cacheKey, [cacheKeyForJobContext]) + } + return new CacheKey(cacheKey, [cacheKeyForJobContext, cacheKeyForJob, cacheKeyForOs]) }