From 3be4889b77818b480fae34768e033f546baeb52f Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 3 Jun 2019 11:12:50 +0200 Subject: [PATCH 1/3] Cache node_modules on Azure Pipelines based on package-lock.json Co-Authored-By: Nathan Sobo Co-Authored-By: Rafael Oleza --- script/vsts/platforms/linux.yml | 15 ++++++++++++++ script/vsts/platforms/macos.yml | 15 ++++++++++++++ script/vsts/platforms/windows.yml | 33 +++++++++++++++++++++++++++++++ script/vsts/x64-cache-key | 1 + script/vsts/x86-cache-key | 1 + 5 files changed, 65 insertions(+) create mode 100644 script/vsts/x64-cache-key create mode 100644 script/vsts/x86-cache-key diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index 1142c428e..f81d889c4 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -12,11 +12,26 @@ jobs: container: atom-linux-ci steps: + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - script: script/bootstrap displayName: Bootstrap build environment env: CI: true CI_PROVIDER: VSTS + condition: ne(variables['CacheRestored'], 'true') + + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - script: script/lint displayName: Run linter diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index 0ea324633..44a753037 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -19,12 +19,27 @@ jobs: - script: npm install --global npm@6.2.0 displayName: Update npm + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - script: script/bootstrap displayName: Bootstrap build environment env: CI: true CI_PROVIDER: VSTS NPM_BIN_PATH: /usr/local/bin/npm + condition: ne(variables['CacheRestored'], 'true') + + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - script: script/lint displayName: Run linter diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index de8247335..c8d800264 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -39,6 +39,22 @@ jobs: npm install displayName: Install Windows build dependencies + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache (x64) + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x64') + + - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 + displayName: Restore node_modules cache (x86) + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x86') + - script: | node script\vsts\windows-run.js script\bootstrap.cmd env: @@ -47,6 +63,23 @@ jobs: CI_PROVIDER: VSTS NPM_BIN_PATH: "D:\\a\\_tool\\node\\8.9.3\\x64\\npm.cmd" displayName: Bootstrap build environment + condition: ne(variables['CacheRestored'], 'true') + + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache (x64) + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x64') + + - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + displayName: Save node_modules cache (x86) + inputs: + keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + condition: eq(variables['buildArch'], 'x86') - script: node script\vsts\windows-run.js script\lint.cmd env: diff --git a/script/vsts/x64-cache-key b/script/vsts/x64-cache-key new file mode 100644 index 000000000..e9b6ac458 --- /dev/null +++ b/script/vsts/x64-cache-key @@ -0,0 +1 @@ +x64 diff --git a/script/vsts/x86-cache-key b/script/vsts/x86-cache-key new file mode 100644 index 000000000..7306afab8 --- /dev/null +++ b/script/vsts/x86-cache-key @@ -0,0 +1 @@ +x86 From 3a6750b3f99fdb2f0d35b62d117ad21e2cdee5d8 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 3 Jun 2019 11:12:50 +0200 Subject: [PATCH 2/3] Run bootstrap only once on Azure Pipelines for Windows --- script/vsts/platforms/windows.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index c8d800264..c613c49af 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -91,14 +91,14 @@ jobs: SET SQUIRREL_TEMP=C:\tmp IF [%IS_RELEASE_BRANCH%]==[true] ( ECHO Creating production artifacts for release branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --code-sign --compress-artifacts --create-windows-installer + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts --create-windows-installer ) ELSE ( IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( ECHO Creating signed CI artifacts for branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --code-sign --compress-artifacts + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts ) ELSE ( ECHO Pull request build, no code signing will be performed - node script\vsts\windows-run.js script\build.cmd --compress-artifacts + node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts ) ) env: From 8231a16d77ed613caaebe384b760a0b0d430d730 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 3 Jun 2019 11:12:50 +0200 Subject: [PATCH 3/3] Add package.json as a key to invalidate the cache on Electron upgrades --- script/vsts/platforms/linux.yml | 4 ++-- script/vsts/platforms/macos.yml | 4 ++-- script/vsts/platforms/windows.yml | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index f81d889c4..e820ef921 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -15,7 +15,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' @@ -29,7 +29,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index 44a753037..223d15d5f 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -22,7 +22,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' @@ -37,7 +37,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index c613c49af..444915c5d 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -42,7 +42,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache (x64) inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x64') @@ -50,7 +50,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 displayName: Restore node_modules cache (x86) inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x86') @@ -68,7 +68,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache (x64) inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x64') @@ -76,7 +76,7 @@ jobs: - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 displayName: Save node_modules cache (x86) inputs: - keyfile: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' + keyfile: 'package.json, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' targetfolder: '**/node_modules, !**/node_modules/**/node_modules' vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' condition: eq(variables['buildArch'], 'x86')