Include Python version in pip cache key

This commit is contained in:
Hugo van Kemenade 2021-12-16 16:28:50 +02:00
parent 156361d073
commit 4f512f8afc
3 changed files with 8 additions and 9 deletions

View file

@ -92,13 +92,9 @@ describe('restore-cache', () => {
dependencyFile dependencyFile
); );
await cacheDistributor.restoreCache(); await cacheDistributor.restoreCache();
let pythonKey = '';
if (packageManager === 'pipenv') {
pythonKey = `python-${pythonVersion}-`;
}
expect(infoSpy).toHaveBeenCalledWith( expect(infoSpy).toHaveBeenCalledWith(
`Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${pythonKey}${packageManager}-${fileHash}` `Cache restored from key: setup-python-${process.env['RUNNER_OS']}-python-${pythonVersion}-${packageManager}-${fileHash}`
); );
} }
); );

View file

@ -13,7 +13,7 @@ export function getCacheDistributor(
) { ) {
switch (packageManager) { switch (packageManager) {
case PackageManagers.Pip: case PackageManagers.Pip:
return new PipCache(cacheDependencyPath); return new PipCache(pythonVersion, cacheDependencyPath);
case PackageManagers.Pipenv: case PackageManagers.Pipenv:
return new PipenvCache(pythonVersion, cacheDependencyPath); return new PipenvCache(pythonVersion, cacheDependencyPath);
default: default:

View file

@ -8,7 +8,10 @@ import os from 'os';
import CacheDistributor from './cache-distributor'; import CacheDistributor from './cache-distributor';
class PipCache extends CacheDistributor { class PipCache extends CacheDistributor {
constructor(cacheDependencyPath: string = '**/requirements.txt') { constructor(
private pythonVersion: string,
cacheDependencyPath: string = '**/requirements.txt'
) {
super('pip', cacheDependencyPath); super('pip', cacheDependencyPath);
} }
@ -36,8 +39,8 @@ class PipCache extends CacheDistributor {
protected async computeKeys() { protected async computeKeys() {
const hash = await glob.hashFiles(this.cacheDependencyPath); const hash = await glob.hashFiles(this.cacheDependencyPath);
const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`; const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`;
const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`; const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}`;
return { return {
primaryKey, primaryKey,