Path: blob/main/build/azure-pipelines/product-quality-checks.yml
13379 views
jobs:1- job: Quality2displayName: Quality Checks3timeoutInMinutes: 204variables:5- name: skipComponentGovernanceDetection6value: true7- name: Codeql.SkipTaskAutoInjection8value: true9steps:10- template: ./common/checkout.yml@self1112- task: NodeTool@013inputs:14versionSource: fromFile15versionFilePath: .nvmrc1617- template: ./distro/download-distro.yml@self1819- task: AzureKeyVault@220displayName: "Azure Key Vault: Get Secrets"21inputs:22azureSubscription: vscode23KeyVaultName: vscode-build-secrets24SecretsFilter: "github-distro-mixin-password"2526- script: node build/setup-npm-registry.ts $NPM_REGISTRY27condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))28displayName: Setup NPM Registry2930- script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.ts quality $(node -p process.arch) > .build/packagelockhash31displayName: Prepare node_modules cache key3233- task: Cache@234inputs:35key: '"node_modules" | .build/packagelockhash'36path: .build/node_modules_cache37cacheHitVar: NODE_MODULES_RESTORED38displayName: Restore node_modules cache3940- script: tar -xzf .build/node_modules_cache/cache.tgz41condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))42displayName: Extract node_modules cache4344- script: |45set -e46npm config set registry "$NPM_REGISTRY"47echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"48condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))49displayName: Setup NPM5051- task: npmAuthenticate@052inputs:53workingFile: $(NPMRC_PATH)54condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))55displayName: Setup NPM Authentication5657- script: |58set -e5960for i in {1..5}; do # try 5 times61npm ci && break62if [ $i -eq 5 ]; then63echo "Npm install failed too many times" >&264exit 165fi66echo "Npm install failed $i, trying again..."67done68workingDirectory: build69env:70GITHUB_TOKEN: "$(github-distro-mixin-password)"71displayName: Install build dependencies72condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))7374- script: |75set -e76export VSCODE_SYSROOT_DIR=$(Build.SourcesDirectory)/.build/sysroots/glibc-2.28-gcc-8.5.077SYSROOT_ARCH="amd64" VSCODE_SYSROOT_PREFIX="-glibc-2.28-gcc-8.5.0" node -e 'import { getVSCodeSysroot } from "./build/linux/debian/install-sysroot.ts"; (async () => { await getVSCodeSysroot(process.env["SYSROOT_ARCH"]); })()'78env:79VSCODE_ARCH: x6480GITHUB_TOKEN: "$(github-distro-mixin-password)"81displayName: Download vscode sysroots8283- script: |84set -e8586source ./build/azure-pipelines/linux/setup-env.sh87node build/npm/preinstall.ts8889for i in {1..5}; do # try 5 times90npm ci && break91if [ $i -eq 5 ]; then92echo "Npm install failed too many times" >&293exit 194fi95echo "Npm install failed $i, trying again..."96done97env:98npm_config_arch: x6499VSCODE_ARCH: x64100ELECTRON_SKIP_BINARY_DOWNLOAD: 1101PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1102GITHUB_TOKEN: "$(github-distro-mixin-password)"103displayName: Install dependencies104condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))105106- script: node build/azure-pipelines/distro/mixin-npm.ts107condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))108displayName: Mixin distro node modules109110- script: |111set -e112node build/azure-pipelines/common/listNodeModules.ts .build/node_modules_list.txt113mkdir -p .build/node_modules_cache114tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt115condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))116displayName: Create node_modules archive117118- script: node build/azure-pipelines/distro/mixin-quality.ts119displayName: Mixin distro quality120121- script: node build/azure-pipelines/common/checkDistroCommit.ts122displayName: Check distro commit123env:124GITHUB_TOKEN: "$(github-distro-mixin-password)"125BUILD_SOURCEBRANCH: "$(Build.SourceBranch)"126continueOnError: true127condition: and(succeeded(), eq(lower(variables['VSCODE_PUBLISH']), 'true'))128129- script: npm exec -- npm-run-all2 -lp core-ci hygiene eslint valid-layers-check define-class-fields-check vscode-dts-compile-check tsec-compile-check test-build-scripts130env:131GITHUB_TOKEN: "$(github-distro-mixin-password)"132displayName: Compile & Hygiene133134- script: npm run download-builtin-extensions-cg135env:136GITHUB_TOKEN: "$(github-distro-mixin-password)"137displayName: Download component details of built-in extensions138condition: and(succeeded(), eq(lower(variables['VSCODE_PUBLISH']), 'true'))139140- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0141displayName: "Component Detection"142inputs:143sourceScanPath: $(Build.SourcesDirectory)144alertWarningLevel: Medium145continueOnError: true146condition: and(succeeded(), eq(lower(variables['VSCODE_PUBLISH']), 'true'))147148- task: AzureCLI@2149displayName: Fetch secrets150inputs:151azureSubscription: vscode152scriptType: pscore153scriptLocation: inlineScript154addSpnToEnvironment: true155inlineScript: |156Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$env:tenantId"157Write-Host "##vso[task.setvariable variable=AZURE_CLIENT_ID]$env:servicePrincipalId"158Write-Host "##vso[task.setvariable variable=AZURE_ID_TOKEN;issecret=true]$env:idToken"159condition: and(succeeded(), eq(lower(variables['VSCODE_PUBLISH']), 'true'))160161- script: |162set -e163AZURE_STORAGE_ACCOUNT="vscodeweb" \164AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \165AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \166AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \167node build/azure-pipelines/upload-sourcemaps.ts168displayName: Upload sourcemaps to Azure169condition: and(succeeded(), eq(lower(variables['VSCODE_PUBLISH']), 'true'))170171172