Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/build/azure-pipelines/product-compile.yml
5335 views
1
jobs:
2
- job: Compile
3
timeoutInMinutes: 60
4
templateContext:
5
outputs:
6
- output: pipelineArtifact
7
targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
8
artifactName: Compilation
9
displayName: Publish compilation artifact
10
isProduction: false
11
sbomEnabled: false
12
steps:
13
- template: ./common/checkout.yml@self
14
15
- task: NodeTool@0
16
inputs:
17
versionSource: fromFile
18
versionFilePath: .nvmrc
19
20
- template: ./distro/download-distro.yml@self
21
22
- task: AzureKeyVault@2
23
displayName: "Azure Key Vault: Get Secrets"
24
inputs:
25
azureSubscription: vscode
26
KeyVaultName: vscode-build-secrets
27
SecretsFilter: "github-distro-mixin-password"
28
29
- script: node build/setup-npm-registry.ts $NPM_REGISTRY
30
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
31
displayName: Setup NPM Registry
32
33
- script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.ts compile $(node -p process.arch) > .build/packagelockhash
34
displayName: Prepare node_modules cache key
35
36
- task: Cache@2
37
inputs:
38
key: '"node_modules" | .build/packagelockhash'
39
path: .build/node_modules_cache
40
cacheHitVar: NODE_MODULES_RESTORED
41
displayName: Restore node_modules cache
42
43
- script: tar -xzf .build/node_modules_cache/cache.tgz
44
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
45
displayName: Extract node_modules cache
46
47
- script: |
48
set -e
49
# Set the private NPM registry to the global npmrc file
50
# so that authentication works for subfolders like build/, remote/, extensions/ etc
51
# which does not have their own .npmrc file
52
npm config set registry "$NPM_REGISTRY"
53
echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
54
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
55
displayName: Setup NPM
56
57
- task: npmAuthenticate@0
58
inputs:
59
workingFile: $(NPMRC_PATH)
60
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
61
displayName: Setup NPM Authentication
62
63
- script: |
64
set -e
65
66
for i in {1..5}; do # try 5 times
67
npm ci && break
68
if [ $i -eq 5 ]; then
69
echo "Npm install failed too many times" >&2
70
exit 1
71
fi
72
echo "Npm install failed $i, trying again..."
73
done
74
env:
75
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
76
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
77
GITHUB_TOKEN: "$(github-distro-mixin-password)"
78
displayName: Install dependencies
79
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
80
81
- script: node build/azure-pipelines/distro/mixin-npm.ts
82
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
83
displayName: Mixin distro node modules
84
85
- script: |
86
set -e
87
node build/azure-pipelines/common/listNodeModules.ts .build/node_modules_list.txt
88
mkdir -p .build/node_modules_cache
89
tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
90
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
91
displayName: Create node_modules archive
92
93
- script: node build/azure-pipelines/distro/mixin-quality.ts
94
displayName: Mixin distro quality
95
96
- template: common/install-builtin-extensions.yml@self
97
98
- script: npm exec -- npm-run-all2 -lp core-ci extensions-ci hygiene eslint valid-layers-check define-class-fields-check vscode-dts-compile-check tsec-compile-check test-build-scripts
99
env:
100
GITHUB_TOKEN: "$(github-distro-mixin-password)"
101
displayName: Compile & Hygiene
102
103
- script: |
104
set -e
105
106
[ -d "out-build" ] || { echo "ERROR: out-build folder is missing" >&2; exit 1; }
107
[ -n "$(find out-build -mindepth 1 2>/dev/null | head -1)" ] || { echo "ERROR: out-build folder is empty" >&2; exit 1; }
108
echo "out-build exists and is not empty"
109
110
ls -d out-vscode-* >/dev/null 2>&1 || { echo "ERROR: No out-vscode-* folders found" >&2; exit 1; }
111
for folder in out-vscode-*; do
112
[ -d "$folder" ] || { echo "ERROR: $folder is missing" >&2; exit 1; }
113
[ -n "$(find "$folder" -mindepth 1 2>/dev/null | head -1)" ] || { echo "ERROR: $folder is empty" >&2; exit 1; }
114
echo "$folder exists and is not empty"
115
done
116
117
echo "All required compilation folders checked."
118
displayName: Validate compilation folders
119
120
- script: |
121
set -e
122
npm run compile
123
displayName: Compile smoke test suites (non-OSS)
124
workingDirectory: test/smoke
125
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
126
127
- script: |
128
set -e
129
npm run compile
130
displayName: Compile integration test suites (non-OSS)
131
workingDirectory: test/integration/browser
132
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
133
134
- task: AzureCLI@2
135
displayName: Fetch secrets
136
inputs:
137
azureSubscription: vscode
138
scriptType: pscore
139
scriptLocation: inlineScript
140
addSpnToEnvironment: true
141
inlineScript: |
142
Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"
143
Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"
144
Write-Host "##vso[task.setvariable variable=AZURE_ID_TOKEN;issecret=true]$env:idToken"
145
146
- script: |
147
set -e
148
AZURE_STORAGE_ACCOUNT="vscodeweb" \
149
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
150
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
151
AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \
152
node build/azure-pipelines/upload-sourcemaps.ts
153
displayName: Upload sourcemaps to Azure
154
155
- script: ./build/azure-pipelines/common/extract-telemetry.sh
156
displayName: Generate lists of telemetry events
157
158
- script: tar -cz --exclude='.build/node_modules_cache' --exclude='.build/node_modules_list.txt' --exclude='.build/distro' -f $(Build.ArtifactStagingDirectory)/compilation.tar.gz $(ls -d .build out-* test/integration/browser/out test/smoke/out test/automation/out 2>/dev/null)
159
displayName: Compress compilation artifact
160
161
- script: npm run download-builtin-extensions-cg
162
env:
163
GITHUB_TOKEN: "$(github-distro-mixin-password)"
164
displayName: Download component details of built-in extensions
165
166
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
167
displayName: "Component Detection"
168
inputs:
169
sourceScanPath: $(Build.SourcesDirectory)
170
alertWarningLevel: Medium
171
continueOnError: true
172
173