product-build-win32.yml 11.8 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
  - task: DownloadPipelineArtifact@2
    inputs:
23 24
      artifact: Compilation
      path: $(Build.ArtifactStagingDirectory)
J
João Moreno 已提交
25 26
    displayName: Download compilation output

27 28 29
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
J
fix tar  
João Moreno 已提交
30
      exec { tar --force-local -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz }
31 32
    displayName: Extract compilation output

J
João Moreno 已提交
33 34 35 36
  - 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 已提交
37

J
João Moreno 已提交
38 39 40
      exec { git config user.email "vscode@microsoft.com" }
      exec { git config user.name "VSCode" }
    displayName: Prepare tooling
J
Joao Moreno 已提交
41

J
João Moreno 已提交
42 43 44
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
J
João Moreno 已提交
45
      exec { git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro") }
J
João Moreno 已提交
46
    displayName: Merge distro
J
Joao Moreno 已提交
47

J
forgot!  
João Moreno 已提交
48 49 50
  - script: |
      npx https://aka.ms/enablesecurefeed standAlone
    displayName: Switch to Terrapin packages
J
João Moreno 已提交
51
    timeoutInMinutes: 7
J
forgot!  
João Moreno 已提交
52 53
    condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'))

J
João Moreno 已提交
54
  - powershell: |
55 56
      "$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
      "$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
A
Alexandru Dima 已提交
57
      node build/azure-pipelines/common/computeNodeModulesCacheKey.js > .build/yarnlockhash
J
João Moreno 已提交
58 59
    displayName: Prepare yarn cache flags

J
João Moreno 已提交
60 61
  - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
    inputs:
62
      keyfile: ".build/arch, .build/terrapin, .build/yarnlockhash"
J
João Moreno 已提交
63 64
      targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
      vstsFeed: "npm-vscode"
J
Joao Moreno 已提交
65

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

J
João Moreno 已提交
79 80
  - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
    inputs:
81
      keyfile: ".build/arch, .build/terrapin, .build/yarnlockhash"
J
João Moreno 已提交
82 83 84
      targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
      vstsFeed: "npm-vscode"
    condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
J
Joao Moreno 已提交
85

J
João Moreno 已提交
86 87 88 89 90
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { node build/azure-pipelines/mixin }
    displayName: Mix in quality
J
Joao Moreno 已提交
91

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

J
João Moreno 已提交
100 101 102 103 104 105 106 107 108
  - 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 已提交
109 110 111 112
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
J
João Moreno 已提交
113 114
      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 已提交
115
      echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(CodeSigningFolderPath),$(agent.builddirectory)/vscode-reh-win32-$(VSCODE_ARCH)"
J
João Moreno 已提交
116 117 118
    displayName: Build Server
    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))

119 120 121 122 123 124 125
  - 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 已提交
126 127 128 129 130 131
  - 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 已提交
132
    timeoutInMinutes: 7
J
João Moreno 已提交
133
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
D
Daniel Imms 已提交
134

J
João Moreno 已提交
135 136 137 138 139
  - 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 已提交
140
    timeoutInMinutes: 7
J
João Moreno 已提交
141
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
142

J
João Moreno 已提交
143 144 145 146 147 148 149
  - 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 已提交
150 151 152 153 154 155 156 157 158 159 160
  - 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 已提交
161
    timeoutInMinutes: 10
J
João Moreno 已提交
162
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
163

J
João Moreno 已提交
164 165 166 167 168
  - 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 已提交
169
    timeoutInMinutes: 7
J
João Moreno 已提交
170
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
B
Benjamin Pasero 已提交
171

J
João Moreno 已提交
172 173 174 175 176 177 178 179
  - 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 已提交
180
    timeoutInMinutes: 7
J
João Moreno 已提交
181
    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
J
Joao Moreno 已提交
182

J
João Moreno 已提交
183 184 185 186 187 188 189
  - task: PublishPipelineArtifact@0
    inputs:
      artifactName: crash-dump-windows-$(VSCODE_ARCH)
      targetPath: .build\crashes
    displayName: "Publish Crash Reports"
    continueOnError: true
    condition: failed()
190

J
João Moreno 已提交
191 192 193 194 195
  - task: PublishTestResults@2
    displayName: Publish Tests Results
    inputs:
      testResultsFiles: "*-results.xml"
      searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
J
João Moreno 已提交
196
    condition: and(succeededOrFailed(), ne(variables['VSCODE_ARCH'], 'arm64'))
197

J
João Moreno 已提交
198 199 200
  - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
    inputs:
      ConnectedServiceName: "ESRP CodeSign"
J
João Moreno 已提交
201
      FolderPath: "$(CodeSigningFolderPath)"
J
João Moreno 已提交
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 245 246 247 248 249 250 251
      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 已提交
252
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
253

J
João Moreno 已提交
254 255 256 257 258 259 260 261
  - 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 已提交
262
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
263

J
João Moreno 已提交
264 265 266 267
  - task: ESRPImportCertTask@1
    displayName: Import ESRP Request Signing Certificate
    inputs:
      ESRP: "ESRP CodeSign"
J
João Moreno 已提交
268
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
269

J
João Moreno 已提交
270 271 272 273 274 275
  - 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 已提交
276
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
277

J
João Moreno 已提交
278 279 280 281 282 283 284 285
  - 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 已提交
286
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
287

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