Commit Graph
32 Commits
Author SHA1 Message Date
e4124f7635 Pin GitHub Actions to full-length commit SHAs (#329034)
* Pin GitHub Actions to full-length commit SHAs

* chore: attest to third-party action pinning changes

I have reviewed the action-pinning diff authored by OssSecurityBot and
verified that each pinned SHA resolves to the same commit the tag it
replaces pointed at, and that no workflow logic was altered beyond the
`uses:` references.

This commit is signed with my key from security/trusted-signing-keys.csv
so the attestation is bound to my identity and to this exact tree. Any
subsequent push replaces the head and invalidates it.

Refs #328868

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: OssSecurityBot <oss-security-bot@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-06 11:22:51 +02:00
Ladislau SzomoruandGitHub 96ff69c836 Engineering - use macOS 26 for PR checks (#327773) 2026-07-28 17:47:54 +00:00
Giuseppe CianciandCopilot 6e0b2e9398 Guard node_modules cache against missing native optional-dep packages
Some deps ship their native binary in a per-platform package declared as an
*optional* dependency of a small base package (e.g. `@openai/codex` ->
`@openai/codex-<platform>-<arch>`, `@anthropic-ai/claude-agent-sdk` ->
`@anthropic-ai/claude-agent-sdk-<platform>-<arch>`). npm does not fail when an
optional dependency can't be installed, so a transient hiccup can leave the base
package present but the per-platform package missing — and that broken tree then
gets frozen into the shared node_modules cache and served to every consumer
(see #323881).

Add build/azure-pipelines/common/checkNativeOptionalDeps.ts and run it after
`npm ci` in the linux, macOS and windows cache-build jobs (before the cache is
saved). For each configured base package that is installed, it asserts the
matching `<base>-<platform>-<arch>` package exists, and fails the job otherwise
so a poisoned cache is never saved.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-03 11:13:03 +02:00
Alexandru DimaandGitHub 3980424ce8 Refactor restore-node-modules action for lookup-only functionality (#322140)
refactor: update restore-node-modules action to support lookup-only functionality

- Replaced 'extract' input with 'lookup-only' to allow cache entry checks without downloading or extracting.
- Updated action logic to conditionally extract node_modules based on the new 'lookup-only' input.
- Adjusted workflow files to utilize 'lookup-only' for cache-warming jobs on Linux, macOS, and Windows.
2026-06-19 19:38:47 +00:00
Alexandru DimaandGitHub 37e7e85b10 Optimize node_modules caching for CI & PR checks (#322074)
* CI: speed up node_modules cache with zstd + shared scripts

Switch the Linux/macOS node_modules cache from single-threaded gzip
(tar -czf) to multi-threaded zstd. The "Create node_modules archive"
step was spending ~5min of single-core gzip on a multi-GB tree on every
cache miss; zstd -T0 uses all cores and decompresses much faster, so
cache-hit jobs benefit too. Windows stays on 7-Zip (already threaded).

Extract the archive/extract commands into shared per-platform scripts
under .github/workflows/node_modules_cache/ (cache.sh / cache.ps1, each
dispatching on an archive|extract argument) so the format and flags live
in one place instead of being duplicated across ~8 workflows. Bump
build/.cachesalt to invalidate existing gzip caches.

Also remove the obsolete extensions/copilot CI workflows
(copilot-setup-steps.yml, ensure-node-modules-cache.yml, pr.yml) and the
unused build/listBuildCacheFiles.js, and drop their now-stale entries
(plus lit-html and signals-core) from .eslint-allowed-javascript-files.

* ci: seed copilot node_modules cache on main and rename cache keys

Add copilot-linux and copilot-windows jobs to pr-node-modules.yml so the
copilot node_modules cache is populated on main. Rename the copilot cache
keys to copilot-node_modules-linux / copilot-node_modules-windows in pr.yml.

* ci: extract node_modules cache into composite actions

Factor the repeated node_modules cache plumbing into two local composite
actions, restore-node-modules and save-node-modules, and migrate all
workflows that used the cache.sh/cache.ps1 archive flow (pr, pr-node-modules,
pr-{linux,darwin,win32}-test, copilot-setup-steps, component-fixtures,
css-order-scan).

- restore-node-modules computes the key, restores the cache, optionally
  extracts on a hit, and exports the resolved key via $GITHUB_ENV.
- save-node-modules archives node_modules and saves it to the cache, reusing
  the key exported by restore so callers don't repeat the prefix.
- Bespoke install steps stay in the workflows, so per-job env/secrets never
  cross the action boundary.
- Only seed the cache on branch pushes (component-fixtures skips PRs, whose
  caches aren't shared).

* save the node_modules cache for now to test it

* ci: fix node_modules cache save dropping the archive

cache.sh wrote its archive as cache.tzst, but actions/cache reserves that
name for its own tarball and passes --exclude cache.tzst, so our archive was
excluded and an empty (~200 B) cache was saved on Linux/macOS. Rename the
archive to node-modules.tzst and bump build/.cachesalt to invalidate the
broken cache entries.

* empty commit

* Remove again saving to the node modules cache from PR steps
2026-06-19 17:21:43 +02:00
RoboandGitHub 843588fd83 chore: bump electron 42 header version for msvc compatibility (#318587) 2026-05-28 01:12:00 +00:00
RoboandGitHub 1897fa3403 ci: fix windows node_modules cache for pr pipeline (#318558) 2026-05-27 15:18:48 +00:00
Michael LivelyandGitHub 7a833e177b ci: switch PR workflows back to 1ES self-hosted runners with JobId (#313128)
* ci: switch PR workflows back to 1ES self-hosted runners with JobId

Re-applies #311975 (reverted in #312033). Adds per-run+attempt JobId
labels to scope 1ES agents to specific GitHub Actions runs and prevent
intermittent runner cancellations.

Also switches the pr.yml compile job's GITHUB_TOKEN from the
ephemeral repo-scoped runner token to secrets.VSCODE_OSS so cross-repo
GitHub API release fetches (vscode-js-debug, vscode-js-debug-companion,
vscode-js-profile-visualizer, etc.) authenticate properly. On 1ES pools
the shared egress IPs hit the anonymous 60/hr api.github.com rate limit
and produced 403 fan-out across PRs last time.

* ci: fall back to GITHUB_TOKEN for fork PRs

Match the historical pattern from before #255987 — fork PRs can't
access secrets.VSCODE_OSS, so use the conditional to pick GITHUB_TOKEN
for forks.
2026-04-29 10:51:12 -07:00
Michael LivelyandGitHub d00e135668 Revert "ci: switch PR workflows back to 1ES self-hosted runners with JobId" (#312033)
Revert "ci: switch PR workflows back to 1ES self-hosted runners with JobId (#…"

This reverts commit 94c4655a2c.
2026-04-22 23:10:55 +00:00
94c4655a2c ci: switch PR workflows back to 1ES self-hosted runners with JobId (#311975)
* ci: switch PR workflows back to 1ES self-hosted runners with JobId

Reverts the GitHub-hosted runner switch for ubuntu/windows jobs in pr*.yml
and adds a unique JobId label per job, per the IcM mitigation. The JobId
ensures 1ES pool runs are scoped to a specific GitHub Actions run+attempt,
which prevents the cancellation issues that occurred with bare pool labels.

Pool labels:
- 1es-vscode-oss-ubuntu-22.04-x64
- 1es-vscode-oss-windows-2022-x64

macOS jobs (pr-darwin-test.yml, pr-node-modules macOS) remain on
GitHub-hosted runners as no 1ES macOS pool exists.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* ci: keep pr-linux-test.yml on ubuntu-24.04 GH-hosted runner

Linux electron tests were stabilized by moving to ubuntu-24.04 in #308495
and #309451. Keep that runner GH-hosted while the rest of the PR workflows
use 1ES self-hosted pools.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* ci: include inputs.job_name in JobId for reusable test workflows

pr-win32-test.yml is invoked 3x from pr.yml (Electron/Browser/Remote) and
without a per-invocation discriminator all 3 jobs share the same JobId
within a run, defeating the 1ES per-job scoping. Add inputs.job_name to
the JobId prefix so each invocation is distinct. Apply the same defense
to pr-linux-cli-test.yml for safety.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 12:53:41 -07:00
Michael LivelyandGitHub 08c09ae70d switch to gh hosted runners (#305298) 2026-03-26 20:58:07 +00:00
Raymond ZhaoandGitHub 000e601e5e Revert "engineering: use tar+zstd for win32 node_modules cache" (#291740)
Revert "engineering: use tar+zstd for win32 node_modules cache (#291624)"

This reverts commit 70529729e6.
2026-01-29 21:48:29 +00:00
70529729e6 engineering: use tar+zstd for win32 node_modules cache (#291624)
* engineering: use tar+zstd for win32 node_modules cache

* bump cache

* Update .github/workflows/pr-node-modules.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update build/azure-pipelines/win32/product-build-win32-node-modules.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update build/azure-pipelines/win32/steps/product-build-win32-compile.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/workflows/pr-win32-test.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* bump cache salt

* more fixes

---------

Co-authored-by: Aman Karmani <aman@tmm1.net>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-29 21:16:43 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
843d264a93 Bump actions/cache from 4 to 5 (#283559)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 11:46:42 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Raymond Zhao
ffc052c913 Bump actions/checkout from 5 to 6 (#279152)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
2025-11-25 14:29:41 +00:00
2648263d3e Run our build scripts directly as typescript (#277567)
* Run our build scripts directly as typescript #277567

Follow up on #276864
For #277526

* Remove a few more ts-node references

* Fix linux and script reference

* Remove `_build-script` ref

* Fix script missing closing quote

* use type only import

* Fix export

* Make sure to run copy-policy-dto

* Make sure we run the copy-policy-dto script

* Enable `verbatimModuleSyntax`

* Pipelines fixes

* Try adding explicit ext to path

* Fix bad edit

* Revert extra `--`

---------

Co-authored-by: João Moreno <joaomoreno@users.noreply.github.com>
2025-11-21 14:56:00 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7a90c2cf94 Bump actions/setup-node from 5 to 6 (#272258)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 15:14:12 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Logan Ramos
62dbaa0e77 Bump actions/setup-node from 4 to 5 (#265655)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Logan Ramos <lramos15@gmail.com>
2025-09-08 17:17:09 +00:00
João MorenoandGitHub 8d7e69612d revert back to official nodejs mirror (#265692)
maybe the issue is gone by now 🤞:
- https://github.com/microsoft/azure-pipelines-tasks/issues/18280
- https://github.com/nodejs/nodejs.org/issues/4495
2025-09-08 17:14:10 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5cd72cdafe Bump actions/checkout from 4 to 5 (#263345)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-27 08:02:07 +00:00
Ladislau SzomoruandGitHub 8a9f44d3ab Engineering - fix node modules cache action (#262282) 2025-08-19 11:26:23 +02:00
RoboandGitHub 10575e19aa (partial revert) ci: remove install build dependencies step on linux (#257064) 2025-07-21 11:25:26 +00:00
RoboandGitHub b37c013d08 ci: remove install build dependencies step on linux (#257050) 2025-07-21 09:38:54 +00:00
RoboandGitHub 2305e3bbcd ci: fix linux node_modules publish pipeline (#256781)
* ci: fix linux node_modules publish pipeline

* fix: build
2025-07-21 18:09:57 +09:00
Ladislau SzomoruandGitHub f6545f394c Engineering - fix built-in extension cache population (#255963) 2025-07-15 10:57:33 +02:00
Alexandru DimaandGitHub c068082c35 Build tweaks (#255857)
* Revert "remove unnecessary build step (#255764)"

This reverts commit 50bf321791.

* Add `enableCrossOsArchive: true`
2025-07-14 20:08:36 +02:00
João MorenoandGitHub 50bf321791 remove unnecessary build step (#255764) 2025-07-14 16:24:59 +02:00
Ladislau SzomoruandGitHub d8367188a0 Engineering - use different token for topic branches (#254714)
Engineering - use different token from topic branches
2025-07-08 19:43:08 +00:00
Ladislau SzomoruandGitHub 716794e638 Engineering - more descriptive cache names (#254496)
Engineering - mode descriptive cache names
2025-07-07 18:23:11 +00:00
Ladislau SzomoruandGitHub 2380d75ac8 Engineering - add job the maintain the node_modules cache for the Compile stage and builtin extensions cache (#254126)
* Engineering - add job the maintain the node_modules cache for the Compile stage and builtin extensions cache

* Fix typo
2025-07-04 16:17:51 +02:00
Ladislau SzomoruandGitHub 69005e1002 Engineering - improve node_modules cache action (#254076) 2025-07-04 13:16:38 +02:00
Ladislau SzomoruandGitHub 74f72e008d Engineering - add GitHub action to maintain node_modules cache (#254069) 2025-07-04 09:27:58 +00:00