2024-09-11 02:37:36 +00:00
parameters :
- name : VSCODE_BUILD_LINUX
type : boolean
default : false
- name : VSCODE_BUILD_LINUX_ARM64
type : boolean
default : false
- name : VSCODE_BUILD_LINUX_ARMHF
type : boolean
default : false
- name : VSCODE_CHECK_ONLY
type : boolean
default : false
- name : VSCODE_QUALITY
type : string
steps :
- task : NodeTool@0
inputs :
versionSource : fromFile
versionFilePath : .nvmrc
nodejsMirror : https://github.com/joaomoreno/node-mirror/releases/download
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
2024-09-24 04:46:08 +00:00
- template : ../cli/cli-apply-patches.yml@self
2024-09-11 02:37:36 +00:00
- task : Npm@1
displayName : Download openssl prebuilt
inputs :
command : custom
customCommand : pack @vscode-internal/openssl-prebuilt@0.0.11
customRegistry : useFeed
customFeed : "Monaco/openssl-prebuilt"
workingDir : $(Build.ArtifactStagingDirectory)
- script : |
set -e
mkdir $(Build.ArtifactStagingDirectory)/openssl
tar -xvzf $(Build.ArtifactStagingDirectory)/vscode-internal-openssl-prebuilt-0.0.11.tgz --strip-components=1 --directory=$(Build.ArtifactStagingDirectory)/openssl
displayName : Extract openssl prebuilt
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
2024-09-24 04:46:08 +00:00
- script : node build/setup-npm-registry.js $NPM_REGISTRY build
condition : and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName : Setup NPM Registry
- script : |
set -e
# Set the private NPM registry to the global npmrc file
# so that authentication works for subfolders like build/, remote/, extensions/ etc
# which does not have their own .npmrc file
npm config set registry "$NPM_REGISTRY"
echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition : and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName : Setup NPM
- task : npmAuthenticate@0
inputs :
workingFile : $(NPMRC_PATH)
condition : and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName : Setup NPM Authentication
2024-09-11 02:37:36 +00:00
- script : |
set -e
for i in {1..5}; do # try 5 times
2024-09-06 13:18:02 +00:00
npm ci && break
if [ $i -eq 5 ]; then
echo "Npm install failed too many times" >&2
2024-09-11 02:37:36 +00:00
exit 1
fi
2024-09-06 13:18:02 +00:00
echo "Npm install failed $i, trying again..."
2024-09-11 02:37:36 +00:00
done
2024-09-06 13:18:02 +00:00
workingDirectory : build
2025-03-01 02:01:53 +00:00
env :
GITHUB_TOKEN : "$(github-distro-mixin-password)"
2024-09-11 02:37:36 +00:00
displayName : Install build dependencies
- script : |
set -e
mkdir -p $(Build.SourcesDirectory)/.build
displayName : Create .build folder for misc dependencies
- template : ../cli/install-rust-posix.yml@self
parameters :
targets :
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARM64, true) }}:
2024-09-24 04:46:08 +00:00
- aarch64-unknown-linux-gnu
2024-09-11 02:37:36 +00:00
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
2024-09-24 04:46:08 +00:00
- x86_64-unknown-linux-gnu
2024-09-11 02:37:36 +00:00
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true) }}:
2024-09-24 04:46:08 +00:00
- armv7-unknown-linux-gnueabihf
2024-09-11 02:37:36 +00:00
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARM64, true) }}:
2024-09-24 04:46:08 +00:00
- template : ../cli/cli-compile.yml@self
parameters :
VSCODE_QUALITY : ${{ parameters.VSCODE_QUALITY }}
VSCODE_CLI_TARGET : aarch64-unknown-linux-gnu
VSCODE_CLI_ARTIFACT : vscode_cli_linux_arm64_cli
VSCODE_CHECK_ONLY : ${{ parameters.VSCODE_CHECK_ONLY }}
VSCODE_CLI_ENV :
OPENSSL_LIB_DIR : $(Build.ArtifactStagingDirectory)/openssl/arm64-linux/lib
OPENSSL_INCLUDE_DIR : $(Build.ArtifactStagingDirectory)/openssl/arm64-linux/include
SYSROOT_ARCH : arm64
2024-09-11 02:37:36 +00:00
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
2024-09-24 04:46:08 +00:00
- template : ../cli/cli-compile.yml@self
parameters :
VSCODE_QUALITY : ${{ parameters.VSCODE_QUALITY }}
VSCODE_CLI_TARGET : x86_64-unknown-linux-gnu
VSCODE_CLI_ARTIFACT : vscode_cli_linux_x64_cli
VSCODE_CHECK_ONLY : ${{ parameters.VSCODE_CHECK_ONLY }}
VSCODE_CLI_ENV :
OPENSSL_LIB_DIR : $(Build.ArtifactStagingDirectory)/openssl/x64-linux/lib
OPENSSL_INCLUDE_DIR : $(Build.ArtifactStagingDirectory)/openssl/x64-linux/include
SYSROOT_ARCH : amd64
2024-09-11 02:37:36 +00:00
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true) }}:
2024-09-24 04:46:08 +00:00
- template : ../cli/cli-compile.yml@self
parameters :
VSCODE_QUALITY : ${{ parameters.VSCODE_QUALITY }}
VSCODE_CLI_TARGET : armv7-unknown-linux-gnueabihf
VSCODE_CLI_ARTIFACT : vscode_cli_linux_armhf_cli
VSCODE_CHECK_ONLY : ${{ parameters.VSCODE_CHECK_ONLY }}
VSCODE_CLI_ENV :
OPENSSL_LIB_DIR : $(Build.ArtifactStagingDirectory)/openssl/arm-linux/lib
OPENSSL_INCLUDE_DIR : $(Build.ArtifactStagingDirectory)/openssl/arm-linux/include
SYSROOT_ARCH : armhf
2024-09-11 02:37:36 +00:00
- ${{ if not(parameters.VSCODE_CHECK_ONLY) }}:
2024-09-24 04:46:08 +00:00
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true) }}:
- task : 1ES.PublishPipelineArtifact@1
inputs :
targetPath : $(Build.ArtifactStagingDirectory)/vscode_cli_linux_armhf_cli.tar.gz
artifactName : vscode_cli_linux_armhf_cli
sbomBuildDropPath : $(Build.ArtifactStagingDirectory)/cli
sbomPackageName : "VS Code Linux armhf CLI"
sbomPackageVersion : $(Build.SourceVersion)
displayName : Publish vscode_cli_linux_armhf_cli artifact
- ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
- task : 1ES.PublishPipelineArtifact@1
inputs :
targetPath : $(Build.ArtifactStagingDirectory)/vscode_cli_linux_x64_cli.tar.gz
artifactName : vscode_cli_linux_x64_cli
sbomBuildDropPath : $(Build.ArtifactStagingDirectory)/cli
sbomPackageName : "VS Code Linux x64 CLI"
sbomPackageVersion : $(Build.SourceVersion)
displayName : Publish vscode_cli_linux_x64_cli artifact
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARM64, true) }}:
- task : 1ES.PublishPipelineArtifact@1
inputs :
targetPath : $(Build.ArtifactStagingDirectory)/vscode_cli_linux_arm64_cli.tar.gz
artifactName : vscode_cli_linux_arm64_cli
sbomBuildDropPath : $(Build.ArtifactStagingDirectory)/cli
sbomPackageName : "VS Code Linux arm64 CLI"
sbomPackageVersion : $(Build.SourceVersion)
displayName : Publish vscode_cli_linux_arm64_cli artifact