Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/build/azure-pipelines/web/product-build-web.yml
5352 views
1
jobs:
2
- job: Web
3
displayName: Web
4
timeoutInMinutes: 30
5
pool:
6
name: 1es-ubuntu-22.04-x64
7
os: linux
8
variables:
9
VSCODE_ARCH: x64
10
templateContext:
11
outputs:
12
- output: pipelineArtifact
13
targetPath: $(Build.ArtifactStagingDirectory)/out/web/vscode-web.tar.gz
14
artifactName: vscode_web_linux_standalone_archive-unsigned
15
displayName: Publish web archive
16
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-web
17
sbomPackageName: "VS Code Linux x64 Web (Standalone)"
18
sbomPackageVersion: $(Build.SourceVersion)
19
steps:
20
- template: ../common/checkout.yml@self
21
22
- task: NodeTool@0
23
inputs:
24
versionSource: fromFile
25
versionFilePath: .nvmrc
26
27
- template: ../distro/download-distro.yml@self
28
29
- task: AzureKeyVault@2
30
displayName: "Azure Key Vault: Get Secrets"
31
inputs:
32
azureSubscription: vscode
33
KeyVaultName: vscode-build-secrets
34
SecretsFilter: "github-distro-mixin-password"
35
36
- task: DownloadPipelineArtifact@2
37
inputs:
38
artifact: Compilation
39
path: $(Build.ArtifactStagingDirectory)
40
displayName: Download compilation output
41
42
- script: tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
43
displayName: Extract compilation output
44
45
- script: node build/setup-npm-registry.ts $NPM_REGISTRY
46
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
47
displayName: Setup NPM Registry
48
49
- script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.ts web $(node -p process.arch) > .build/packagelockhash
50
displayName: Prepare node_modules cache key
51
52
- task: Cache@2
53
inputs:
54
key: '"node_modules" | .build/packagelockhash'
55
path: .build/node_modules_cache
56
cacheHitVar: NODE_MODULES_RESTORED
57
displayName: Restore node_modules cache
58
59
- script: tar -xzf .build/node_modules_cache/cache.tgz
60
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
61
displayName: Extract node_modules cache
62
63
- script: |
64
set -e
65
# Set the private NPM registry to the global npmrc file
66
# so that authentication works for subfolders like build/, remote/, extensions/ etc
67
# which does not have their own .npmrc file
68
npm config set registry "$NPM_REGISTRY"
69
echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
70
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
71
displayName: Setup NPM
72
73
- task: npmAuthenticate@0
74
inputs:
75
workingFile: $(NPMRC_PATH)
76
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
77
displayName: Setup NPM Authentication
78
79
- script: |
80
set -e
81
./build/azure-pipelines/linux/apt-retry.sh sudo apt-get update
82
./build/azure-pipelines/linux/apt-retry.sh sudo apt-get install -y libkrb5-dev
83
displayName: Setup system services
84
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
85
86
- script: |
87
set -e
88
89
for i in {1..5}; do # try 5 times
90
npm ci && break
91
if [ $i -eq 5 ]; then
92
echo "Npm install failed too many times" >&2
93
exit 1
94
fi
95
echo "Npm install failed $i, trying again..."
96
done
97
env:
98
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
99
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
100
GITHUB_TOKEN: "$(github-distro-mixin-password)"
101
displayName: Install dependencies
102
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
103
104
- script: node build/azure-pipelines/distro/mixin-npm.ts
105
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
106
displayName: Mixin distro node modules
107
108
- script: |
109
set -e
110
node build/azure-pipelines/common/listNodeModules.ts .build/node_modules_list.txt
111
mkdir -p .build/node_modules_cache
112
tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
113
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
114
displayName: Create node_modules archive
115
116
- script: node build/azure-pipelines/distro/mixin-quality.ts
117
displayName: Mixin distro quality
118
119
- template: ../common/install-builtin-extensions.yml@self
120
121
- script: |
122
set -e
123
npm run gulp vscode-web-min-ci
124
ARCHIVE_PATH="$(Build.ArtifactStagingDirectory)/out/web/vscode-web.tar.gz"
125
mkdir -p $(dirname $ARCHIVE_PATH)
126
tar --owner=0 --group=0 -czf $ARCHIVE_PATH -C .. vscode-web
127
echo "##vso[task.setvariable variable=WEB_PATH]$ARCHIVE_PATH"
128
env:
129
GITHUB_TOKEN: "$(github-distro-mixin-password)"
130
displayName: Build
131
132
- task: AzureCLI@2
133
displayName: Fetch secrets from Azure
134
inputs:
135
azureSubscription: vscode
136
scriptType: pscore
137
scriptLocation: inlineScript
138
addSpnToEnvironment: true
139
inlineScript: |
140
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
141
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
142
Write-Host "##vso[task.setvariable variable=AZURE_ID_TOKEN;issecret=true]$env:idToken"
143
144
- script: |
145
set -e
146
AZURE_STORAGE_ACCOUNT="vscodeweb" \
147
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
148
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
149
AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \
150
node build/azure-pipelines/upload-cdn.ts
151
displayName: Upload to CDN
152
153
- script: |
154
set -e
155
AZURE_STORAGE_ACCOUNT="vscodeweb" \
156
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
157
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
158
AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \
159
node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.internal.js.map
160
displayName: Upload sourcemaps (Web)
161
162
- script: |
163
set -e
164
AZURE_STORAGE_ACCOUNT="vscodeweb" \
165
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
166
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
167
AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \
168
node build/azure-pipelines/upload-nlsmetadata.ts
169
displayName: Upload NLS Metadata
170
171