product-build-win32.yml 11.9 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 30 31 32
  - powershell: |
      . build/azure-pipelines/win32/exec.ps1
      $ErrorActionPreference = "Stop"
      exec { tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz }
    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 55
  - powershell: |
      "$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
J
João Moreno 已提交
56
      "$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
J
João Moreno 已提交
57 58
    displayName: Prepare yarn cache flags

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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