mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-30 18:46:00 +01:00
* chore: bump electron@43.4.1 * linux: align desktop name and StartupWMClass Give DEB and RPM installs a package owned reverse DNS desktop name so runtime wayland portal identity resolves to an installed desktop file. Keep snap and archive runtime identities aligned with their distribution specific desktop file behavior. Set StartupWMClass to the same identity used by the runtime. * linux: respect native window controls layout Reserve both left and right WCO safe areas so custom title bar content does not overlap controls when the desktop environment places them on either side. * dialogs: preserve native locations Electron 43 defaults native dialogs without a defaultPath to the Downloads directory instead of allowing the platform to retain its last location. Resolve existing file or folder history before invoking native open and save dialogs, while preserving an explicit caller-provided URI. * protocol: migrate from deprecated handlers Replace deprecated registerFileProtocol, registerBufferProtocol, registerHttpProtocol, and interceptFileProtocol APIs with protocol.handle(). * test: migrate unit test protocol handler * chore: remove obsolete WebSQL preferences Electron 43 removes WebSQL and its enableWebSQL web preference. * fix: wco position for windows * protocol: avoid exposing managed resource errors * test: preserve file URLs in protocol handler * test: adopt worker parent identifiers in CDP golden Electron 43 target lifecycle payloads include parentId and parentFrameId for worker targets. * build: support V8 headers with GCC 12 * test: use platform native dialog paths * build: install custom electron headers * build: bootstrap electron headers in compile job * build: bootstrap Electron headers for Alpine and web * chore: bump electron@43.5.1 * chore: revert system fontconfig init workaround * temp: bump distro * chore: bump electron@43.6.0 * test: skip Dev Container agent host smoke test for exploration The exploration update channel serves an outdated agent host server that does not include the bundled Copilot CLI, causing the smoke test to time out. * chore: bump distro
381 lines
13 KiB
YAML
381 lines
13 KiB
YAML
name: Code OSS (node_modules)
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
compile:
|
|
name: Compile
|
|
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-ubuntu-22.04-x64, "JobId=compile-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ]
|
|
steps:
|
|
- name: Checkout microsoft/vscode
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version-file: .nvmrc
|
|
|
|
- name: Restore node_modules cache
|
|
id: cache-node-modules
|
|
uses: ./.github/actions/restore-node-modules
|
|
with:
|
|
key-prefix: node_modules-compile
|
|
key-args: "compile $(node -p process.arch)"
|
|
|
|
- name: Install build tools
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: sudo apt update -y && sudo apt install -y build-essential pkg-config libx11-dev libx11-xcb-dev libxkbfile-dev libnotify-bin libkrb5-dev
|
|
|
|
- name: Install Electron headers
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: node build/npm/preinstall.ts
|
|
|
|
- name: Install dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: |
|
|
set -e
|
|
|
|
for i in {1..5}; do # try 5 times
|
|
npm ci && break
|
|
if [ $i -eq 5 ]; then
|
|
echo "Npm install failed too many times" >&2
|
|
exit 1
|
|
fi
|
|
echo "Npm install failed $i, trying again..."
|
|
done
|
|
env:
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
- name: Save node_modules cache
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/save-node-modules
|
|
|
|
- name: Prepare built-in extensions cache key
|
|
run: |
|
|
set -e
|
|
mkdir -p .build
|
|
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.ts > .build/builtindepshash
|
|
|
|
- name: Restore built-in extensions cache
|
|
id: cache-builtin-extensions
|
|
uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5.1.0
|
|
with:
|
|
enableCrossOsArchive: true
|
|
path: .build/builtInExtensions
|
|
key: "builtin-extensions-${{ hashFiles('.build/builtindepshash') }}"
|
|
|
|
- name: Download built-in extensions
|
|
if: steps.cache-builtin-extensions.outputs.cache-hit != 'true'
|
|
run: node build/lib/builtInExtensions.ts
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
linux:
|
|
name: Linux
|
|
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-ubuntu-22.04-x64, "JobId=linux-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ]
|
|
env:
|
|
NPM_ARCH: x64
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- name: Checkout microsoft/vscode
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version-file: .nvmrc
|
|
|
|
- name: Check Electron cache
|
|
id: cache-electron
|
|
uses: ./.github/actions/setup-electron
|
|
with:
|
|
arch: ${{ env.VSCODE_ARCH }}
|
|
lookup-only: 'true'
|
|
|
|
- name: Restore node_modules cache
|
|
id: cache-node-modules
|
|
uses: ./.github/actions/restore-node-modules
|
|
with:
|
|
key-prefix: node_modules-linux
|
|
key-args: "linux ${{ env.VSCODE_ARCH }} $(node -p process.arch)"
|
|
lookup-only: ${{ steps.cache-electron.outputs.cache-hit == 'true' }}
|
|
|
|
- name: Install build dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
working-directory: build
|
|
run: |
|
|
set -e
|
|
|
|
for i in {1..5}; do # try 5 times
|
|
npm ci && break
|
|
if [ $i -eq 5 ]; then
|
|
echo "Npm install failed too many times" >&2
|
|
exit 1
|
|
fi
|
|
echo "Npm install failed $i, trying again..."
|
|
done
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
- name: Install dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: |
|
|
set -e
|
|
|
|
source ./build/azure-pipelines/linux/setup-env.sh
|
|
|
|
for i in {1..5}; do # try 5 times
|
|
npm ci && break
|
|
if [ $i -eq 5 ]; then
|
|
echo "Npm install failed too many times" >&2
|
|
exit 1
|
|
fi
|
|
echo "Npm install failed $i, trying again..."
|
|
done
|
|
env:
|
|
npm_config_arch: ${{ env.NPM_ARCH }}
|
|
VSCODE_ARCH: ${{ env.VSCODE_ARCH }}
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
- name: Verify native optional dependency binaries
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
|
|
|
|
- name: Save node_modules cache
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/save-node-modules
|
|
|
|
- name: Setup Electron
|
|
if: steps.cache-electron.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/setup-electron
|
|
with:
|
|
arch: ${{ env.VSCODE_ARCH }}
|
|
save-cache: 'true'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
macOS:
|
|
name: macOS
|
|
runs-on: macos-26-xlarge
|
|
env:
|
|
NPM_ARCH: arm64
|
|
VSCODE_ARCH: arm64
|
|
steps:
|
|
- name: Checkout microsoft/vscode
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version-file: .nvmrc
|
|
|
|
- name: Check Electron cache
|
|
id: cache-electron
|
|
uses: ./.github/actions/setup-electron
|
|
with:
|
|
arch: ${{ env.VSCODE_ARCH }}
|
|
lookup-only: 'true'
|
|
|
|
- name: Restore node_modules cache
|
|
id: cache-node-modules
|
|
uses: ./.github/actions/restore-node-modules
|
|
with:
|
|
key-prefix: node_modules-macos
|
|
key-args: "darwin ${{ env.VSCODE_ARCH }} $(node -p process.arch)"
|
|
lookup-only: ${{ steps.cache-electron.outputs.cache-hit == 'true' }}
|
|
|
|
- name: Install dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: |
|
|
set -e
|
|
c++ --version
|
|
xcode-select -print-path
|
|
python3 -m pip install --break-system-packages setuptools
|
|
|
|
for i in {1..5}; do # try 5 times
|
|
npm ci && break
|
|
if [ $i -eq 5 ]; then
|
|
echo "Npm install failed too many times" >&2
|
|
exit 1
|
|
fi
|
|
echo "Npm install failed $i, trying again..."
|
|
done
|
|
env:
|
|
npm_config_arch: ${{ env.NPM_ARCH }}
|
|
VSCODE_ARCH: ${{ env.VSCODE_ARCH }}
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
# Avoid using dlopen to load Kerberos on macOS which can cause missing libraries
|
|
# https://github.com/mongodb-js/kerberos/commit/04044d2814ad1d01e77f1ce87f26b03d86692cf2
|
|
# flipped the default to support legacy linux distros which shouldn't happen
|
|
# on macOS.
|
|
GYP_DEFINES: "kerberos_use_rtld=false"
|
|
|
|
- name: Verify native optional dependency binaries
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
|
|
|
|
- name: Save node_modules cache
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/save-node-modules
|
|
|
|
- name: Setup Electron
|
|
if: steps.cache-electron.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/setup-electron
|
|
with:
|
|
arch: ${{ env.VSCODE_ARCH }}
|
|
save-cache: 'true'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
windows:
|
|
name: Windows
|
|
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-windows-2022-x64, "JobId=windows-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ]
|
|
env:
|
|
NPM_ARCH: x64
|
|
VSCODE_ARCH: x64
|
|
steps:
|
|
- name: Checkout microsoft/vscode
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version-file: .nvmrc
|
|
|
|
- name: Check Electron cache
|
|
id: cache-electron
|
|
uses: ./.github/actions/setup-electron
|
|
with:
|
|
arch: ${{ env.VSCODE_ARCH }}
|
|
lookup-only: 'true'
|
|
|
|
- name: Restore node_modules cache
|
|
id: node-modules-cache
|
|
uses: ./.github/actions/restore-node-modules
|
|
with:
|
|
key-prefix: node_modules-windows
|
|
key-args: "win32 ${{ env.VSCODE_ARCH }} $(node -p process.arch)"
|
|
lookup-only: ${{ steps.cache-electron.outputs.cache-hit == 'true' }}
|
|
|
|
- name: Install dependencies
|
|
if: steps.node-modules-cache.outputs.cache-hit != 'true'
|
|
shell: pwsh
|
|
run: |
|
|
. build/azure-pipelines/win32/exec.ps1
|
|
$ErrorActionPreference = "Stop"
|
|
for ($i = 1; $i -le 5; $i++) {
|
|
try {
|
|
exec { npm ci }
|
|
break
|
|
}
|
|
catch {
|
|
if ($i -eq 5) {
|
|
Write-Error "npm ci failed after 5 attempts"
|
|
throw
|
|
}
|
|
Write-Host "npm ci failed attempt $i, retrying..."
|
|
Start-Sleep -Seconds 2
|
|
}
|
|
}
|
|
env:
|
|
npm_config_arch: ${{ env.NPM_ARCH }}
|
|
npm_config_foreground_scripts: "true"
|
|
VSCODE_ARCH: ${{ env.VSCODE_ARCH }}
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
- name: Verify native optional dependency binaries
|
|
if: steps.node-modules-cache.outputs.cache-hit != 'true'
|
|
run: node build/azure-pipelines/common/checkNativeOptionalDeps.ts
|
|
|
|
- name: Save node_modules cache
|
|
if: steps.node-modules-cache.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/save-node-modules
|
|
|
|
- name: Setup Electron
|
|
if: steps.cache-electron.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/setup-electron
|
|
with:
|
|
arch: ${{ env.VSCODE_ARCH }}
|
|
save-cache: 'true'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.VSCODE_OSS }}
|
|
|
|
copilot-linux:
|
|
name: Copilot (Linux)
|
|
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-ubuntu-22.04-x64, "JobId=copilot-linux-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ]
|
|
steps:
|
|
- name: Checkout microsoft/vscode
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version-file: extensions/copilot/.nvmrc
|
|
|
|
- name: Restore node_modules cache
|
|
id: cache-node-modules
|
|
uses: ./.github/actions/restore-node-modules
|
|
with:
|
|
key-prefix: copilot-node_modules-linux
|
|
key-args: "$(node -p process.platform) $(node -p process.arch)"
|
|
lookup-only: 'true'
|
|
|
|
- name: Install root dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: npm ci --ignore-scripts --no-workspaces
|
|
|
|
- name: Install copilot dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
working-directory: extensions/copilot
|
|
run: npm ci
|
|
|
|
- name: Save node_modules cache
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/save-node-modules
|
|
|
|
copilot-windows:
|
|
name: Copilot (Windows)
|
|
runs-on: [ self-hosted, 1ES.Pool=1es-vscode-oss-windows-2022-x64, "JobId=copilot-windows-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ]
|
|
steps:
|
|
- name: Checkout microsoft/vscode
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version-file: extensions/copilot/.nvmrc
|
|
|
|
- name: Restore node_modules cache
|
|
id: cache-node-modules
|
|
uses: ./.github/actions/restore-node-modules
|
|
with:
|
|
key-prefix: copilot-node_modules-windows
|
|
key-args: "$(node -p process.platform) $(node -p process.arch)"
|
|
lookup-only: 'true'
|
|
|
|
- name: Install root dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
run: npm ci --ignore-scripts --no-workspaces
|
|
|
|
- name: Install copilot dependencies
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
working-directory: extensions/copilot
|
|
run: npm ci
|
|
|
|
- name: Save node_modules cache
|
|
if: steps.cache-node-modules.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/save-node-modules
|