From ba33a692f186dd93542417e5b83c8710ad54c255 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Mon, 31 Jan 2022 12:42:08 +0200 Subject: [PATCH] Include Python version in pip cache key (#303) --- __tests__/cache-restore.test.ts | 6 +----- dist/setup/index.js | 9 +++++---- src/cache-distributions/cache-factory.ts | 2 +- src/cache-distributions/pip-cache.ts | 9 ++++++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/__tests__/cache-restore.test.ts b/__tests__/cache-restore.test.ts index f3c5b01..d982fd0 100644 --- a/__tests__/cache-restore.test.ts +++ b/__tests__/cache-restore.test.ts @@ -92,13 +92,9 @@ describe('restore-cache', () => { dependencyFile ); await cacheDistributor.restoreCache(); - let pythonKey = ''; - if (packageManager === 'pipenv') { - pythonKey = `python-${pythonVersion}-`; - } 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}` ); } ); diff --git a/dist/setup/index.js b/dist/setup/index.js index 321877d..ca8a37c 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -34467,8 +34467,9 @@ const path = __importStar(__webpack_require__(622)); const os_1 = __importDefault(__webpack_require__(87)); const cache_distributor_1 = __importDefault(__webpack_require__(435)); class PipCache extends cache_distributor_1.default { - constructor(cacheDependencyPath = '**/requirements.txt') { + constructor(pythonVersion, cacheDependencyPath = '**/requirements.txt') { super('pip', cacheDependencyPath); + this.pythonVersion = pythonVersion; } getCacheGlobalDirectories() { return __awaiter(this, void 0, void 0, function* () { @@ -34487,8 +34488,8 @@ class PipCache extends cache_distributor_1.default { computeKeys() { return __awaiter(this, void 0, void 0, function* () { const hash = yield glob.hashFiles(this.cacheDependencyPath); - const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`; - const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`; + 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']}-python-${this.pythonVersion}-${this.packageManager}`; return { primaryKey, restoreKey: [restoreKey] @@ -43888,7 +43889,7 @@ var PackageManagers; function getCacheDistributor(packageManager, pythonVersion, cacheDependencyPath) { switch (packageManager) { case PackageManagers.Pip: - return new pip_cache_1.default(cacheDependencyPath); + return new pip_cache_1.default(pythonVersion, cacheDependencyPath); case PackageManagers.Pipenv: return new pipenv_cache_1.default(pythonVersion, cacheDependencyPath); default: diff --git a/src/cache-distributions/cache-factory.ts b/src/cache-distributions/cache-factory.ts index 1a8a055..3e363a0 100644 --- a/src/cache-distributions/cache-factory.ts +++ b/src/cache-distributions/cache-factory.ts @@ -13,7 +13,7 @@ export function getCacheDistributor( ) { switch (packageManager) { case PackageManagers.Pip: - return new PipCache(cacheDependencyPath); + return new PipCache(pythonVersion, cacheDependencyPath); case PackageManagers.Pipenv: return new PipenvCache(pythonVersion, cacheDependencyPath); default: diff --git a/src/cache-distributions/pip-cache.ts b/src/cache-distributions/pip-cache.ts index 81b875f..f4d7c24 100644 --- a/src/cache-distributions/pip-cache.ts +++ b/src/cache-distributions/pip-cache.ts @@ -8,7 +8,10 @@ import os from 'os'; import CacheDistributor from './cache-distributor'; class PipCache extends CacheDistributor { - constructor(cacheDependencyPath: string = '**/requirements.txt') { + constructor( + private pythonVersion: string, + cacheDependencyPath: string = '**/requirements.txt' + ) { super('pip', cacheDependencyPath); } @@ -36,8 +39,8 @@ class PipCache extends CacheDistributor { protected async computeKeys() { const hash = await glob.hashFiles(this.cacheDependencyPath); - const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`; - const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`; + 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']}-python-${this.pythonVersion}-${this.packageManager}`; return { primaryKey,