product-build-win32.yml 11.6 KB
Newer Older
J
Joao Moreno 已提交
1
steps:
J
João Moreno 已提交
2 3
  - task: NodeTool@0
    inputs:
R
Robo 已提交
4
      versionSpec: "12.18.3"
J
Joao Moreno 已提交
5

J
João Moreno 已提交
6 7 8
  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
    inputs:
      versionSpec: "1.x"
J
Joao Moreno 已提交
9

J
João Moreno 已提交
10 11 12 13
  - task: UsePythonVersion@0
    inputs:
      versionSpec: "2.x"
      addToPath: true
J
Joao Moreno 已提交
14

J
João Moreno 已提交
15 16 17 18 19
  - task: AzureKeyVault@1
    displayName: "Azure Key Vault: Get Secrets"
    inputs:
      azureSubscription: "vscode-builds-subscription"
      KeyVaultName: vscode
J
build  
Joao Moreno 已提交
20

J
João Moreno 已提交
21 22 23 24 25 26
  - task: DownloadPipelineArtifact@2
    inputs:
      artifact: CompilationOutput
      path: $(System.DefaultWorkingDirectory)
    displayName: Download compilation output

J
João Moreno 已提交
27 28 29 30
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      "machine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
J
Joao Moreno 已提交
31

J
João Moreno 已提交
32 33 34
      exec { git config user.email "vscode@microsoft.com" }
      exec { git config user.name "VSCode" }
    displayName: Prepare tooling
J
Joao Moreno 已提交
35

J
João Moreno 已提交
36 37 38
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
J
João Moreno 已提交
39
      exec { git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro") }
J
João Moreno 已提交
40
    displayName: Merge distro
J
Joao Moreno 已提交
41

J
forgot!  
João Moreno 已提交
42 43 44
  - script: |
      npx https://aka.ms/enablesecurefeed standAlone
    displayName: Switch to Terrapin packages
J
João Moreno 已提交
45
    timeoutInMinutes: 7
J
forgot!  
João Moreno 已提交
46 47
    condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'))

J
João Moreno 已提交
48 49
  - powershell: |
      "$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
J
João Moreno 已提交
50
      "$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
J
João Moreno 已提交
51 52
    displayName: Prepare yarn cache flags

J
João Moreno 已提交
53 54
  - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
    inputs:
J
build:  
João Moreno 已提交
55
      keyfile: ".build/arch, .build/terrapin, build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock"
J
João Moreno 已提交
56 57
      targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
      vstsFeed: "npm-vscode"
J
Joao Moreno 已提交
58

J
João Moreno 已提交
59 60
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
J
João Moreno 已提交
61
      . build/azure-pipelines/win32/retry.ps1
J
João Moreno 已提交
62
      $ErrorActionPreference = "Stop"
J
João Moreno 已提交
63 64
      $env:npm_config_arch="$(VSCODE_ARCH)"
      $env:CHILD_CONCURRENCY="1"
J
João Moreno 已提交
65
      retry { exec { yarn --frozen-lockfile } }
66 67
    env:
      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
68
      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
J
João Moreno 已提交
69 70
    displayName: Install dependencies
    condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
J
Joao Moreno 已提交
71

J
João Moreno 已提交
72 73
  - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
    inputs:
J
build:  
João Moreno 已提交
74
      keyfile: ".build/arch, .build/terrapin, build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock"
J
João Moreno 已提交
75 76 77
      targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
      vstsFeed: "npm-vscode"
    condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
J
Joao Moreno 已提交
78

J
João Moreno 已提交
79 80 81 82 83
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { node build/azure-pipelines/mixin }
    displayName: Mix in quality
J
Joao Moreno 已提交
84

J
João Moreno 已提交
85 86 87 88
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
J
João Moreno 已提交
89
      exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
J
João Moreno 已提交
90
      echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
J
João Moreno 已提交
91
    displayName: Build
J
Joao Moreno 已提交
92

J
João Moreno 已提交
93 94 95 96 97 98 99 100 101
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
      exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-code-helper" }
      exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
    displayName: Prepare Package
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))

J
João Moreno 已提交
102 103 104 105
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
J
João Moreno 已提交
106 107
      exec { yarn gulp "vscode-reh-win32-$(VSCODE_ARCH)-min-ci" }
      exec { yarn gulp "vscode-reh-web-win32-$(VSCODE_ARCH)-min-ci" }
J
João Moreno 已提交
108
      echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(CodeSigningFolderPath),$(agent.builddirectory)/vscode-reh-win32-$(VSCODE_ARCH)"
J
João Moreno 已提交
109 110 111
    displayName: Build Server
    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))

112 113 114 115 116 117 118
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install" }
    displayName: Download Electron and Playwright
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))

J
João Moreno 已提交
119 120 121 122 123 124
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { yarn electron $(VSCODE_ARCH) }
      exec { .\scripts\test.bat --build --tfs "Unit Tests" }
    displayName: Run unit tests (Electron)
J
João Moreno 已提交
125
    timeoutInMinutes: 7
J
João Moreno 已提交
126
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
D
Daniel Imms 已提交
127

J
João Moreno 已提交
128 129 130 131 132
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { yarn test-browser --build --browser chromium --browser firefox --tfs "Browser Unit Tests" }
    displayName: Run unit tests (Browser)
J
João Moreno 已提交
133
    timeoutInMinutes: 7
J
João Moreno 已提交
134
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
135

J
João Moreno 已提交
136 137 138 139 140 141 142
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { yarn --cwd test/integration/browser compile }
    displayName: Compile integration tests
    condition: and(succeeded(), eq(variables['CacheRestored'], 'true'), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))

J
João Moreno 已提交
143 144 145 146 147 148 149 150 151 152 153
  - powershell: |
      # Figure out the full absolute path of the product we just built
      # including the remote server and configure the integration tests
      # to run with these builds instead of running out of sources.
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
      $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
      $AppNameShort = $AppProductJson.nameShort
      exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
    displayName: Run integration tests (Electron)
J
João Moreno 已提交
154
    timeoutInMinutes: 10
J
João Moreno 已提交
155
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
156

J
João Moreno 已提交
157 158 159 160 161
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-web-integration.bat --browser firefox }
    displayName: Run integration tests (Browser)
J
João Moreno 已提交
162
    timeoutInMinutes: 7
J
João Moreno 已提交
163
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
B
Benjamin Pasero 已提交
164

J
João Moreno 已提交
165 166 167 168 169 170 171 172
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
      $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
      $AppNameShort = $AppProductJson.nameShort
      exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-remote-integration.bat }
    displayName: Run remote integration tests (Electron)
J
João Moreno 已提交
173
    timeoutInMinutes: 7
J
João Moreno 已提交
174
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
J
Joao Moreno 已提交
175

J
João Moreno 已提交
176 177 178 179 180 181 182
  - task: PublishPipelineArtifact@0
    inputs:
      artifactName: crash-dump-windows-$(VSCODE_ARCH)
      targetPath: .build\crashes
    displayName: "Publish Crash Reports"
    continueOnError: true
    condition: failed()
183

J
João Moreno 已提交
184 185 186 187 188
  - task: PublishTestResults@2
    displayName: Publish Tests Results
    inputs:
      testResultsFiles: "*-results.xml"
      searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
J
João Moreno 已提交
189
    condition: and(succeededOrFailed(), ne(variables['VSCODE_ARCH'], 'arm64'))
190

J
João Moreno 已提交
191 192 193
  - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
    inputs:
      ConnectedServiceName: "ESRP CodeSign"
J
João Moreno 已提交
194
      FolderPath: "$(CodeSigningFolderPath)"
J
João Moreno 已提交
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
      Pattern: "*.dll,*.exe,*.node"
      signConfigType: inlineSignParams
      inlineOperation: |
        [
          {
            "keyCode": "CP-230012",
            "operationSetCode": "SigntoolSign",
            "parameters": [
              {
                "parameterName": "OpusName",
                "parameterValue": "VS Code"
              },
              {
                "parameterName": "OpusInfo",
                "parameterValue": "https://code.visualstudio.com/"
              },
              {
                "parameterName": "Append",
                "parameterValue": "/as"
              },
              {
                "parameterName": "FileDigest",
                "parameterValue": "/fd \"SHA256\""
              },
              {
                "parameterName": "PageHash",
                "parameterValue": "/NPH"
              },
              {
                "parameterName": "TimeStamp",
                "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
              }
            ],
            "toolName": "sign",
            "toolVersion": "1.0"
          },
          {
            "keyCode": "CP-230012",
            "operationSetCode": "SigntoolVerify",
            "parameters": [
              {
                "parameterName": "VerifyAll",
                "parameterValue": "/all"
              }
            ],
            "toolName": "sign",
            "toolVersion": "1.0"
          }
        ]
      SessionTimeout: 120
J
João Moreno 已提交
245
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
246

J
João Moreno 已提交
247 248 249 250 251 252 253 254
  - task: NuGetCommand@2
    displayName: Install ESRPClient.exe
    inputs:
      restoreSolution: 'build\azure-pipelines\win32\ESRPClient\packages.config'
      feedsToUse: config
      nugetConfigPath: 'build\azure-pipelines\win32\ESRPClient\NuGet.config'
      externalFeedCredentials: "ESRP Nuget"
      restoreDirectory: packages
J
João Moreno 已提交
255
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
256

J
João Moreno 已提交
257 258 259 260
  - task: ESRPImportCertTask@1
    displayName: Import ESRP Request Signing Certificate
    inputs:
      ESRP: "ESRP CodeSign"
J
João Moreno 已提交
261
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
262

J
João Moreno 已提交
263 264 265 266 267 268
  - task: PowerShell@2
    inputs:
      targetType: filePath
      filePath: .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1
      arguments: "$(ESRP-SSL-AADAuth)"
    displayName: Import ESRP Auth Certificate
J
João Moreno 已提交
269
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
270

J
João Moreno 已提交
271 272 273 274 275 276 277 278
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
      $env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
      .\build\azure-pipelines\win32\publish.ps1
    displayName: Publish
J
João Moreno 已提交
279
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
280

J
João Moreno 已提交
281 282 283
  - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
    displayName: "Component Detection"
    continueOnError: true