diff --git a/action.yml b/action.yml index 10a44a8..081f151 100644 --- a/action.yml +++ b/action.yml @@ -24,6 +24,10 @@ inputs: description: Whether caching of Gradle User Home and project .gradle directory is enabled. Valid values are 'true' (default), 'false', and 'read-only'. required: false default: true + 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. + required: false + default: ${{ toJSON(matrix) }} outputs: build-scan-url: diff --git a/src/cache-utils.ts b/src/cache-utils.ts index 8d7c33c..b7e607d 100644 --- a/src/cache-utils.ts +++ b/src/cache-utils.ts @@ -51,16 +51,9 @@ function generateCacheKey(cacheName: string): CacheKey { } function determineJobContext(): string { - // Ideally we'd serialize the entire matrix values here, but matrix is not available within the action invocation. - // Use the JAVA_HOME value as a proxy for the java version - const javaHome = process.env['JAVA_HOME'] || '' - - // Approximate overall context based on the first gradle invocation in the Job - const args = core.getInput('arguments') - const buildRootDirectory = core.getInput('build-root-directory') - const gradleVersion = core.getInput('gradle-version') - - return hashStrings([javaHome, args, buildRootDirectory, gradleVersion]) + // By default, we hash the full `matrix` data for the run, to uniquely identify this job invocation + const workflowJobContext = core.getInput('workflow-job-context') + return hashStrings([workflowJobContext]) } export function hashStrings(values: string[]): string { diff --git a/src/main.ts b/src/main.ts index a910b5e..c83bfe2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -16,6 +16,7 @@ export async function run(): Promise { try { const args: string[] = parseCommandLineArguments() + // TODO: instead of running with no-daemon, run `--stop` in post action. args.push('--no-daemon') const result = await execution.execute(