Path: blob/main/build/azure-pipelines/product-compile.yml
3520 views
jobs:1- job: Compile2timeoutInMinutes: 603pool:4name: AcesShared5os: macOS6templateContext:7outputs:8- output: pipelineArtifact9targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz10artifactName: Compilation11displayName: Publish compilation artifact12isProduction: false13sbomEnabled: false14steps:15- template: ./common/checkout.yml@self1617- task: NodeTool@018inputs:19versionSource: fromFile20versionFilePath: .nvmrc2122- template: ./distro/download-distro.yml@self2324- task: AzureKeyVault@225displayName: "Azure Key Vault: Get Secrets"26inputs:27azureSubscription: vscode28KeyVaultName: vscode-build-secrets29SecretsFilter: "github-distro-mixin-password"3031- script: node build/setup-npm-registry.js $NPM_REGISTRY32condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))33displayName: Setup NPM Registry3435- script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js compile $(node -p process.arch) > .build/packagelockhash36displayName: Prepare node_modules cache key3738- task: Cache@239inputs:40key: '"node_modules" | .build/packagelockhash'41path: .build/node_modules_cache42cacheHitVar: NODE_MODULES_RESTORED43displayName: Restore node_modules cache4445- script: tar -xzf .build/node_modules_cache/cache.tgz46condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))47displayName: Extract node_modules cache4849- script: |50set -e51# Set the private NPM registry to the global npmrc file52# so that authentication works for subfolders like build/, remote/, extensions/ etc53# which does not have their own .npmrc file54npm config set registry "$NPM_REGISTRY"55echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"56condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))57displayName: Setup NPM5859- task: npmAuthenticate@060inputs:61workingFile: $(NPMRC_PATH)62condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))63displayName: Setup NPM Authentication6465- script: |66set -e6768for i in {1..5}; do # try 5 times69npm ci && break70if [ $i -eq 5 ]; then71echo "Npm install failed too many times" >&272exit 173fi74echo "Npm install failed $i, trying again..."75done76env:77ELECTRON_SKIP_BINARY_DOWNLOAD: 178PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 179GITHUB_TOKEN: "$(github-distro-mixin-password)"80displayName: Install dependencies81condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))8283- script: node build/azure-pipelines/distro/mixin-npm84condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))85displayName: Mixin distro node modules8687- script: |88set -e89node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt90mkdir -p .build/node_modules_cache91tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt92condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))93displayName: Create node_modules archive9495- script: node build/azure-pipelines/distro/mixin-quality96displayName: Mixin distro quality9798- template: common/install-builtin-extensions.yml@self99100- script: npm exec -- npm-run-all -lp core-ci extensions-ci hygiene eslint valid-layers-check define-class-fields-check vscode-dts-compile-check tsec-compile-check101env:102GITHUB_TOKEN: "$(github-distro-mixin-password)"103displayName: Compile & Hygiene104105- script: |106set -e107npm run compile108displayName: Compile smoke test suites (non-OSS)109workingDirectory: test/smoke110condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))111112- script: |113set -e114npm run compile115displayName: Compile integration test suites (non-OSS)116workingDirectory: test/integration/browser117condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))118119- task: AzureCLI@2120displayName: Fetch secrets121inputs:122azureSubscription: vscode123scriptType: pscore124scriptLocation: inlineScript125addSpnToEnvironment: true126inlineScript: |127Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"128Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"129Write-Host "##vso[task.setvariable variable=AZURE_ID_TOKEN;issecret=true]$env:idToken"130131- script: |132set -e133AZURE_STORAGE_ACCOUNT="vscodeweb" \134AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \135AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \136AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \137node build/azure-pipelines/upload-sourcemaps138displayName: Upload sourcemaps to Azure139140- script: ./build/azure-pipelines/common/extract-telemetry.sh141displayName: Generate lists of telemetry events142143- 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)144displayName: Compress compilation artifact145146- script: npm run download-builtin-extensions-cg147env:148GITHUB_TOKEN: "$(github-distro-mixin-password)"149displayName: Download component details of built-in extensions150151- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0152displayName: "Component Detection"153inputs:154sourceScanPath: $(Build.SourcesDirectory)155alertWarningLevel: Medium156continueOnError: true157158159