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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

J
João Moreno 已提交
265 266 267 268
  - task: ESRPImportCertTask@1
    displayName: Import ESRP Request Signing Certificate
    inputs:
      ESRP: "ESRP CodeSign"
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
  - 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 已提交
277
    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
J
Joao Moreno 已提交
278

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

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