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