From cd3a4636e9e768e4a22695488f0bfaa5e0543828 Mon Sep 17 00:00:00 2001 From: aminya Date: Thu, 16 Jul 2020 06:09:01 -0500 Subject: [PATCH 1/3] more restore keys --- script/vsts/platforms/templates/cache.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/script/vsts/platforms/templates/cache.yml b/script/vsts/platforms/templates/cache.yml index 37683f403a4..df78cd47965 100644 --- a/script/vsts/platforms/templates/cache.yml +++ b/script/vsts/platforms/templates/cache.yml @@ -12,6 +12,9 @@ steps: displayName: Cache node_modules inputs: key: 'npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | package.json, package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + restoreKeys: | + npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | package.json, package-lock.json + npm | "$(Agent.OS)" | "$(BUILD_ARCH)" path: 'node_modules' cacheHitVar: MainNodeModulesRestored @@ -19,6 +22,9 @@ steps: displayName: Cache script/node_modules inputs: key: 'npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | script/package.json, script/package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + restoreKeys: | + npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | script/package.json, script/package-lock.json + npm | "$(Agent.OS)" | "$(BUILD_ARCH)" path: 'script/node_modules' cacheHitVar: ScriptNodeModulesRestored @@ -26,5 +32,8 @@ steps: displayName: Cache apm/node_modules inputs: key: 'npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | apm/package.json, apm/package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + restoreKeys: | + npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | apm/package.json, apm/package-lock.json + npm | "$(Agent.OS)" | "$(BUILD_ARCH)" path: 'apm/node_modules' cacheHitVar: ApmNodeModulesRestored From 594447f0f20b79e4931f87d6a80b9b1a96f3bed2 Mon Sep 17 00:00:00 2001 From: aminya Date: Thu, 16 Jul 2020 06:16:45 -0500 Subject: [PATCH 2/3] CI: Cache/restore the npm network/package cache This saves/restores the caches of just the packages as source code. Not the installed and/or compiled versions, which are in node_modules. (We have already been caching those for some time now.) Co-Authored-By: deedeeg --- script/vsts/platforms/templates/bootstrap.yml | 1 + script/vsts/platforms/templates/cache.yml | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/script/vsts/platforms/templates/bootstrap.yml b/script/vsts/platforms/templates/bootstrap.yml index 898d8273c16..ddcc4f87ac1 100644 --- a/script/vsts/platforms/templates/bootstrap.yml +++ b/script/vsts/platforms/templates/bootstrap.yml @@ -28,4 +28,5 @@ steps: GITHUB_TOKEN: $(GITHUB_TOKEN) CI: true CI_PROVIDER: VSTS + npm_config_cache: $(Agent.BuildDirectory)/npm_package_cache_dir condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true')) diff --git a/script/vsts/platforms/templates/cache.yml b/script/vsts/platforms/templates/cache.yml index df78cd47965..8d6701e69b3 100644 --- a/script/vsts/platforms/templates/cache.yml +++ b/script/vsts/platforms/templates/cache.yml @@ -37,3 +37,13 @@ steps: npm | "$(Agent.OS)" | "$(BUILD_ARCH)" path: 'apm/node_modules' cacheHitVar: ApmNodeModulesRestored + + - task: Cache@2 + displayName: Cache npm package cache + inputs: + key: 'npm_package_cache | "$(Agent.OS)" | "$(BUILD_ARCH)" | script/package-lock.json, apm/package-lock.json, package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + restoreKeys: | + npm_package_cache | "$(Agent.OS)" | "$(BUILD_ARCH)" | script/package-lock.json, apm/package-lock.json, package-lock.json + npm_package_cache | "$(Agent.OS)" | "$(BUILD_ARCH)" + npm_package_cache + path: $(Agent.BuildDirectory)/npm_package_cache_dir From ee770efc66b3c34c2ed668661f23e8d85f7fab56 Mon Sep 17 00:00:00 2001 From: aminya Date: Thu, 16 Jul 2020 06:17:19 -0500 Subject: [PATCH 3/3] CI: Skip npm package cache if not bootstrapping No need to "save time on network access" if there won't be any network access at all! Co-Authored-By: deedeeg --- script/vsts/platforms/templates/cache.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/script/vsts/platforms/templates/cache.yml b/script/vsts/platforms/templates/cache.yml index 8d6701e69b3..78696d19f6f 100644 --- a/script/vsts/platforms/templates/cache.yml +++ b/script/vsts/platforms/templates/cache.yml @@ -47,3 +47,5 @@ steps: npm_package_cache | "$(Agent.OS)" | "$(BUILD_ARCH)" npm_package_cache path: $(Agent.BuildDirectory)/npm_package_cache_dir + condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true')) + # No need to restore network/package cache if bootstrapping will be skipped!