95 lines
3.3 KiB
YAML
95 lines
3.3 KiB
YAML
trigger: none
|
|
|
|
pr:
|
|
branches:
|
|
include: ["main"]
|
|
paths:
|
|
include: ["package.json", "package-lock.json"]
|
|
|
|
variables:
|
|
- name: NPM_REGISTRY
|
|
value: "https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/"
|
|
- name: VSCODE_CIBUILD
|
|
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
|
|
- name: VSCODE_QUALITY
|
|
value: oss
|
|
|
|
jobs:
|
|
- ${{ if ne(variables['VSCODE_CIBUILD'], true) }}:
|
|
- job: ValidateNpmPackage
|
|
displayName: Valiate NPM package against Terrapin
|
|
pool:
|
|
name: 1es-ubuntu-22.04-x64
|
|
os: linux
|
|
timeoutInMinutes: 40000
|
|
continueOnError: true
|
|
variables:
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- task: NodeTool@0
|
|
inputs:
|
|
versionSource: fromFile
|
|
versionFilePath: .nvmrc
|
|
nodejsMirror: https://github.com/joaomoreno/node-mirror/releases/download
|
|
|
|
- script: node build/setup-npm-registry.js $NPM_REGISTRY
|
|
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
|
|
displayName: Setup NPM Registry
|
|
|
|
- script: |
|
|
set -e
|
|
# Set the private NPM registry to the global npmrc file
|
|
# so that authentication works for subfolders like build/, remote/, extensions/ etc
|
|
# which does not have their own .npmrc file
|
|
echo "NPMRC Path: $(npm config get userconfig)"
|
|
echo "NPM Registry: $(npm config get registry)"
|
|
npm config set registry "$NPM_REGISTRY"
|
|
echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
|
|
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
|
|
displayName: Setup NPM
|
|
|
|
- task: npmAuthenticate@0
|
|
inputs:
|
|
workingFile: $(NPMRC_PATH)
|
|
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
|
|
displayName: Setup NPM Authentication
|
|
|
|
- script: sudo apt update -y && sudo apt install -y build-essential pkg-config libx11-dev libx11-xcb-dev libxkbfile-dev libnotify-bin libkrb5-dev
|
|
displayName: Install build tools
|
|
condition: succeeded()
|
|
|
|
- script: |
|
|
set -e
|
|
|
|
for attempt in {1..6}; do
|
|
if [ $attempt -gt 1 ]; then
|
|
echo "Attempt $attempt: Waiting for 1 hour before retrying..."
|
|
sleep 3600
|
|
fi
|
|
|
|
echo "Attempt $attempt: Running npm ci"
|
|
if npm i --ignore-scripts; then
|
|
if node build/npm/postinstall.js; then
|
|
echo "npm i succeeded on attempt $attempt"
|
|
exit 0
|
|
else
|
|
echo "node build/npm/postinstall.js failed on attempt $attempt"
|
|
fi
|
|
else
|
|
echo "npm i failed on attempt $attempt"
|
|
fi
|
|
done
|
|
|
|
echo "npm i failed after 6 attempts"
|
|
exit 1
|
|
env:
|
|
npm_command: 'install --ignore-scripts'
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
|
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
|
displayName: Install dependencies with retries
|
|
timeoutInMinutes: 400
|
|
|
|
- script: .github/workflows/check-clean-git-state.sh
|
|
displayName: Check clean git state
|