diff --git a/__tests__/cache-restore.test.ts b/__tests__/cache-restore.test.ts index 27f6fa27..a1518363 100644 --- a/__tests__/cache-restore.test.ts +++ b/__tests__/cache-restore.test.ts @@ -108,7 +108,7 @@ describe('cache-restore', () => { it.each([['npm7'], ['npm6'], ['pnpm6'], ['yarn1'], ['yarn2'], ['random']])( 'Throw an error because %s is not supported', async packageManager => { - await expect(restoreCache(packageManager)).rejects.toThrowError( + await expect(restoreCache('v16.17.1', packageManager)).rejects.toThrowError( `Caching for '${packageManager}' is not supported` ); } @@ -132,10 +132,10 @@ describe('cache-restore', () => { } }); - await restoreCache(packageManager); + await restoreCache('v16.17.1', packageManager); expect(hashFilesSpy).toHaveBeenCalled(); expect(infoSpy).toHaveBeenCalledWith( - `Cache restored from key: node-cache-${platform}-${packageManager}-${fileHash}` + `Cache restored from key: node-cache-v16-${platform}-${packageManager}-${fileHash}` ); expect(infoSpy).not.toHaveBeenCalledWith( `${packageManager} cache is not found` @@ -163,7 +163,7 @@ describe('cache-restore', () => { }); restoreCacheSpy.mockImplementationOnce(() => undefined); - await restoreCache(packageManager); + await restoreCache('v16.17.1', packageManager); expect(hashFilesSpy).toHaveBeenCalled(); expect(infoSpy).toHaveBeenCalledWith( `${packageManager} cache is not found` diff --git a/src/cache-restore.ts b/src/cache-restore.ts index d49b27fc..41cee761 100644 --- a/src/cache-restore.ts +++ b/src/cache-restore.ts @@ -12,6 +12,7 @@ import { } from './cache-utils'; export const restoreCache = async ( + nodeVersion: string, packageManager: string, cacheDependencyPath?: string ) => { @@ -36,7 +37,8 @@ export const restoreCache = async ( ); } - const primaryKey = `node-cache-${platform}-${packageManager}-${fileHash}`; + const nodeMajor = nodeVersion.split('.')[0]; + const primaryKey = `node-cache-${nodeMajor}-${platform}-${packageManager}-${fileHash}`; core.debug(`primary key is ${primaryKey}`); core.saveState(State.CachePrimaryKey, primaryKey); diff --git a/src/main.ts b/src/main.ts index d43614e6..3ad11038 100644 --- a/src/main.ts +++ b/src/main.ts @@ -40,14 +40,16 @@ export async function run() { await installer.getNode(version, stable, checkLatest, auth, arch); } + let installedVersion = version // Output version of node is being used try { - const {stdout: installedVersion} = await exec.getExecOutput( + const {stdout} = await exec.getExecOutput( 'node', ['--version'], {ignoreReturnCode: true, silent: true} ); - core.setOutput('node-version', installedVersion.trim()); + installedVersion = stdout.trim(); + core.setOutput('node-version', installedVersion); } catch (err) { core.setOutput('node-version', ''); } @@ -60,7 +62,7 @@ export async function run() { if (cache && isCacheFeatureAvailable()) { const cacheDependencyPath = core.getInput('cache-dependency-path'); - await restoreCache(cache, cacheDependencyPath); + await restoreCache(cache, cacheDependencyPath, installedVersion); } const matchersPath = path.join(__dirname, '../..', '.github');