phases: - phase: Windows condition: eq(variables['VSCODE_BUILD_WIN32'], 'true') queue: name: Hosted VS2017 parallel: 2 matrix: x64: VSCODE_ARCH: x64 # ia32: # VSCODE_ARCH: ia32 steps: - task: NodeTool@0 inputs: versionSpec: "8.9.1" - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - powershell: | $ErrorActionPreference = "Stop" "machine monacotools.visualstudio.com password $(VSO_PAT)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII $env:npm_config_arch="$(VSCODE_ARCH)" $env:CHILD_CONCURRENCY="1" yarn npm run gulp -- hygiene npm run monaco-compile-check $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js node build/lib/builtInExtensions.js - powershell: | $ErrorActionPreference = "Stop" $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-min" npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-copy-inno-updater" name: build - powershell: | $ErrorActionPreference = "Stop" npm run gulp -- "electron-$(VSCODE_ARCH)" .\scripts\test.bat --build --tfs "Unit Tests" # yarn smoketest -- --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" name: test # - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 # inputs: # ConnectedServiceName: 'ESRP CodeSign' # FolderPath: '$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)' # Pattern: '*.dll,*.exe,*.node' # signConfigType: inlineSignParams # inlineOperation: | # [ # { # "keyCode": "CP-229803", # "operationSetCode": "SigntoolSign", # "parameters": [ # { # "parameterName": "OpusName", # "parameterValue": "VS Code" # }, # { # "parameterName": "OpusInfo", # "parameterValue": "https://code.visualstudio.com/" # }, # { # "parameterName": "PageHash", # "parameterValue": "/NPH" # }, # { # "parameterName": "TimeStamp", # "parameterValue": "/t \"http://ts4096.gtm.microsoft.com/TSS/AuthenticodeTS\"" # } # ], # "toolName": "sign", # "toolVersion": "1.0" # }, # { # "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 - task: NuGetCommand@2 displayName: Install ESRPClient.exe inputs: restoreSolution: 'build\tfs\win32\ESRPClient\packages.config' feedsToUse: config nugetConfigPath: 'build\tfs\win32\ESRPClient\NuGet.config' externalFeedCredentials: 3fc0b7f7-da09-4ae7-a9c8-d69824b1819b restoreDirectory: packages - task: ESRPImportCertTask@1 displayName: Import ESRP Request Signing Certificate inputs: ESRP: 'ESRP CodeSign' - powershell: | $ErrorActionPreference = "Stop" .\build\tfs\win32\import-esrp-auth-cert.ps1 -AuthCertificateBase64 $(ESRP_AUTH_CERTIFICATE) -AuthCertificateKey $(ESRP_AUTH_CERTIFICATE_KEY) displayName: Import ESRP Auth Certificate - powershell: | $ErrorActionPreference = "Stop" npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-archive" "vscode-win32-$(VSCODE_ARCH)-system-setup" "vscode-win32-$(VSCODE_ARCH)-user-setup" $Repo = "$(pwd)" $Root = "$Repo\.." $SystemExe = "$Repo\.build\win32-$(VSCODE_ARCH)\system-setup\VSCodeSetup.exe" $UserExe = "$Repo\.build\win32-$(VSCODE_ARCH)\user-setup\VSCodeSetup.exe" $Zip = "$Repo\.build\win32-$(VSCODE_ARCH)\archive\VSCode-win32-$(VSCODE_ARCH).zip" $Build = "$Root\VSCode-win32-$(VSCODE_ARCH)" # get version $PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json $Version = $PackageJson.version $Quality = "$env:VSCODE_QUALITY" $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(AZURE_STORAGE_ACCESS_KEY_2)" $env:MOONCAKE_STORAGE_ACCESS_KEY = "$(MOONCAKE_STORAGE_ACCESS_KEY)" $env:AZURE_DOCUMENTDB_MASTERKEY = "$(AZURE_DOCUMENTDB_MASTERKEY)" $assetPlatform = if ("$(VSCODE_ARCH)" -eq "ia32") { "win32" } else { "win32-x64" } node build/tfs/common/publish.js $Quality "$global:assetPlatform-archive" archive "VSCode-win32-$(VSCODE_ARCH)-$Version.zip" $Version true $Zip node build/tfs/common/publish.js $Quality "$global:assetPlatform" setup "VSCodeSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $SystemExe node build/tfs/common/publish.js $Quality "$global:assetPlatform-user" setup "VSCodeUserSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $UserExe # publish hockeyapp symbols $hockeyAppId = if ("$(VSCODE_ARCH)" -eq "ia32") { "$(VSCODE_HOCKEYAPP_ID_WIN32)" } else { "$(VSCODE_HOCKEYAPP_ID_WIN64)" } node build/tfs/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" $hockeyAppId - phase: Linux condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') queue: linux-x64 variables: VSCODE_ARCH: x64 steps: - task: NodeTool@0 inputs: versionSpec: "8.9.1" - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - script: | set -e export npm_config_arch="$(VSCODE_ARCH)" if [[ "$(VSCODE_ARCH)" == "ia32" ]]; then export PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" fi echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn # npm run gulp -- hygiene # npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js node build/lib/builtInExtensions.js - script: | set -e VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min name: build - script: | set -e npm run gulp -- "electron-$(VSCODE_ARCH)" DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests" # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)" name: test - script: | set -e npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ ./build/tfs/linux/release.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" # publish hockeyapp symbols node build/tfs/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" "$(VSCODE_HOCKEYAPP_ID_LINUX64)" - phase: Linux32 condition: eq(variables['VSCODE_BUILD_LINUX'], 'true') queue: linux-ia32 variables: VSCODE_ARCH: ia32 steps: - task: NodeTool@0 inputs: versionSpec: "8.9.1" - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - script: | set -e export npm_config_arch="$(VSCODE_ARCH)" if [[ "$(VSCODE_ARCH)" == "ia32" ]]; then export PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" fi echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn npm run gulp -- hygiene npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js node build/lib/builtInExtensions.js - script: | set -e VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min name: build - script: | set -e npm run gulp -- "electron-$(VSCODE_ARCH)" DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests" # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)" name: test - script: | set -e npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb" npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm" #npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-snap" AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ ./build/tfs/linux/release.sh "$(VSCODE_ARCH)" "$(LINUX_REPO_PASSWORD)" # publish hockeyapp symbols node build/tfs/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" "$(VSCODE_HOCKEYAPP_ID_LINUX32)" - phase: macOS condition: eq(variables['VSCODE_BUILD_MACOS'], 'true') queue: Hosted macOS Preview steps: - task: NodeTool@0 inputs: versionSpec: "8.9.1" - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 inputs: versionSpec: "1.3.2" - script: | set -e echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc yarn npm run gulp -- hygiene npm run monaco-compile-check VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin node build/tfs/common/installDistro.js node build/lib/builtInExtensions.js - script: | set -e VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" \ AZURE_STORAGE_ACCESS_KEY="$(AZURE_STORAGE_ACCESS_KEY)" \ npm run gulp -- vscode-darwin-min upload-vscode-sourcemaps name: build - script: | set -e ./scripts/test.sh --build --tfs "Unit Tests" APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`" # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME" name: test - script: | set -e # archive the unsigned build pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin-unsigned.zip * && popd # publish the unsigned build PACKAGEJSON=`ls ../VSCode-darwin/*.app/Contents/Resources/app/package.json` VERSION=`node -p "require(\"$PACKAGEJSON\").version"` AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \ node build/tfs/common/publish.js \ "$(VSCODE_QUALITY)" \ darwin \ archive-unsigned \ "VSCode-darwin-$(VSCODE_QUALITY)-unsigned.zip" \ $VERSION \ false \ ../VSCode-darwin-unsigned.zip # publish hockeyapp symbols node build/tfs/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" "$(VSCODE_HOCKEYAPP_ID_MACOS)" # enqueue the unsigned build AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \ AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \ node build/tfs/darwin/enqueue.js "$(VSCODE_QUALITY)" AZURE_STORAGE_ACCESS_KEY="$(AZURE_STORAGE_ACCESS_KEY)" \ npm run gulp -- upload-vscode-configuration