Files
vscode/.github/workflows/pr-node-modules.yml
T
Robo 4ae4d96052 chore: update to Electron 43 (#332935)
* 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
2026-09-16 08:59:16 +02:00

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