fix: cache key should include node version

This commit is contained in:
Steven 2022-09-30 15:11:50 -04:00
parent 969bd26639
commit 2792b3f52b
3 changed files with 12 additions and 8 deletions

View file

@ -108,7 +108,7 @@ describe('cache-restore', () => {
it.each([['npm7'], ['npm6'], ['pnpm6'], ['yarn1'], ['yarn2'], ['random']])( it.each([['npm7'], ['npm6'], ['pnpm6'], ['yarn1'], ['yarn2'], ['random']])(
'Throw an error because %s is not supported', 'Throw an error because %s is not supported',
async packageManager => { async packageManager => {
await expect(restoreCache(packageManager)).rejects.toThrowError( await expect(restoreCache('v16.17.1', packageManager)).rejects.toThrowError(
`Caching for '${packageManager}' is not supported` `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(hashFilesSpy).toHaveBeenCalled();
expect(infoSpy).toHaveBeenCalledWith( 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( expect(infoSpy).not.toHaveBeenCalledWith(
`${packageManager} cache is not found` `${packageManager} cache is not found`
@ -163,7 +163,7 @@ describe('cache-restore', () => {
}); });
restoreCacheSpy.mockImplementationOnce(() => undefined); restoreCacheSpy.mockImplementationOnce(() => undefined);
await restoreCache(packageManager); await restoreCache('v16.17.1', packageManager);
expect(hashFilesSpy).toHaveBeenCalled(); expect(hashFilesSpy).toHaveBeenCalled();
expect(infoSpy).toHaveBeenCalledWith( expect(infoSpy).toHaveBeenCalledWith(
`${packageManager} cache is not found` `${packageManager} cache is not found`

View file

@ -12,6 +12,7 @@ import {
} from './cache-utils'; } from './cache-utils';
export const restoreCache = async ( export const restoreCache = async (
nodeVersion: string,
packageManager: string, packageManager: string,
cacheDependencyPath?: 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.debug(`primary key is ${primaryKey}`);
core.saveState(State.CachePrimaryKey, primaryKey); core.saveState(State.CachePrimaryKey, primaryKey);

View file

@ -40,14 +40,16 @@ export async function run() {
await installer.getNode(version, stable, checkLatest, auth, arch); await installer.getNode(version, stable, checkLatest, auth, arch);
} }
let installedVersion = version
// Output version of node is being used // Output version of node is being used
try { try {
const {stdout: installedVersion} = await exec.getExecOutput( const {stdout} = await exec.getExecOutput(
'node', 'node',
['--version'], ['--version'],
{ignoreReturnCode: true, silent: true} {ignoreReturnCode: true, silent: true}
); );
core.setOutput('node-version', installedVersion.trim()); installedVersion = stdout.trim();
core.setOutput('node-version', installedVersion);
} catch (err) { } catch (err) {
core.setOutput('node-version', ''); core.setOutput('node-version', '');
} }
@ -60,7 +62,7 @@ export async function run() {
if (cache && isCacheFeatureAvailable()) { if (cache && isCacheFeatureAvailable()) {
const cacheDependencyPath = core.getInput('cache-dependency-path'); const cacheDependencyPath = core.getInput('cache-dependency-path');
await restoreCache(cache, cacheDependencyPath); await restoreCache(cache, cacheDependencyPath, installedVersion);
} }
const matchersPath = path.join(__dirname, '../..', '.github'); const matchersPath = path.join(__dirname, '../..', '.github');