Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
344 commits
Select commit Hold shift + click to select a range
7074ae3
test: allow half-open CONNECT tunnel sockets
trivikr Aug 3, 2026
59d7e22
test: avoid deadlock issue in pipeline http2 tests to fix flakiness
pimterry Aug 9, 2026
10b2c8a
tools: fix GITHUB_TOKEN permissions for CQ workflow
aduh95 Aug 10, 2026
fc038a0
tools: bump js-yaml from 4.2.0 to 4.3.1 in /tools/eslint
dependabot[bot] Aug 10, 2026
5506f77
tools: bump js-yaml from 4.2.0 to 4.3.1 in /tools/lint-md
dependabot[bot] Aug 10, 2026
50174cb
build: deprecate always enabled `--enable-static`
legendecas Aug 10, 2026
b1aa78a
test: fix hidden error in test-http-server-stale-close.js
nektro Aug 10, 2026
631d3aa
deps: update libffi to 3.8.0
nodejs-github-bot Aug 11, 2026
4160dfd
deps: update googletest to d89aac5f0dd4021198d903d39de16f896726de21
nodejs-github-bot Aug 11, 2026
69e4fab
test: update WPT for urlpattern to 4832db4761
nodejs-github-bot Aug 11, 2026
cc19107
test: update WPT for WebCryptoAPI to 4c2fd05ed5
nodejs-github-bot Aug 11, 2026
f45dc92
deps: update undici to 8.10.0
nodejs-github-bot Aug 11, 2026
83169e5
sqlite: reject statement-less SQL in SQLTagStore
TrevorBurnham Aug 9, 2026
5e387ce
sqlite: reject statement-less SQL in prepare()
TrevorBurnham Aug 9, 2026
162257b
assert: improve documentation wording
Rawal27 Aug 11, 2026
40b1b18
tools: remove skip logic in `commit-queue.sh`
aduh95 Aug 11, 2026
3cfe194
src: use concepts where appropriate
jasnell Aug 11, 2026
f2cc681
deps: enable AVX-512 OpenSSL asm with clang
lemire Aug 11, 2026
3ab7e72
sqlite: check sqlite3_step() and sqlite3_reset() results
semimikoh Aug 11, 2026
53d5273
tools: fix quote escaping in `update-nixpkgs-pin.sh`
aduh95 Aug 11, 2026
43f1dc0
doc: document close() error when in a sqlite callback
trivikr Aug 11, 2026
d6059e8
doc: update synopsis
AugustinMauroy Aug 11, 2026
4e06739
test_runner: do not tag-filter test file wrappers
atlowChemi Aug 11, 2026
4abd1c8
meta: add support for alpha prerelease tag
aduh95 Aug 11, 2026
b7a2342
src: add SetAbortHandler
maxhfisher Jul 22, 2026
3e50a2f
sqlite: manage sqlite3_stmt lifetime with RAII
araujogui Aug 11, 2026
6f9e084
ffi: validate fast pointer BigInt argument ranges
trivikr Aug 12, 2026
9fc811a
typings: add credentials internal binding types
HoonDongKang Aug 12, 2026
c63e873
doc: fix broken fs.BigIntStats link in vfs.md
greenheadHQ Aug 12, 2026
4018f3a
src: shave about 20 bytes off each TLSWrap instance
jasnell Aug 8, 2026
753033c
lib,src: improve histogram implementation
jasnell Aug 4, 2026
be4e7de
tools: only include fast-tracked and old enough PRs in CQ
aduh95 Aug 12, 2026
f77aa2f
src: cache permission strings
jasnell Aug 8, 2026
968bdd0
src: use DictionaryTemplate for permission diag channel message
jasnell Aug 9, 2026
ec8fe27
src: make minor cleanup to permission checks
jasnell Aug 9, 2026
ac920e0
src: simplify c++ diagnostics channel API
jasnell Aug 9, 2026
521aaf1
src: apply multiple general cleanups to permissions
jasnell Aug 9, 2026
efb649e
src: make permission storage a bit more efficient
jasnell Aug 9, 2026
d4ced88
src: apply a modest performance perf to permissions
jasnell Aug 9, 2026
5954b13
src: simplify includes in permissions
jasnell Aug 9, 2026
981cfa5
src: simplify permissions with BooleanPermissions
jasnell Aug 9, 2026
3a47f1f
src: apply minor namespace format tweak in permissions
jasnell Aug 9, 2026
bf86fab
test: add permission fast api test
jasnell Aug 9, 2026
5b5509d
doc: create ai-guidelines and include to CONTRIBUTING
RafaelGSS Aug 12, 2026
ebd8c6b
deps: float ICU-23262 patch for icu78
Renegade334 Aug 12, 2026
d7805e0
module: fix --check on ambiguous ESM files
bitpshr Aug 12, 2026
374f7e2
stream: use validateBuffer for BYOB reader view
greenheadHQ Aug 13, 2026
6a142c0
crypto: read WebCrypto inputs through primordials
panva Aug 7, 2026
219495f
test: account for [EnforceRange] in test-webcrypto-prototype-pollution
panva Aug 9, 2026
fd7e904
test: update tests to run with OpenSSL >= 3.0 FIPS mode
panva Aug 2, 2026
66ee479
crypto: disable non-FIPS WebCrypto paths in FIPS mode
panva Aug 11, 2026
af867ce
crypto: add mgf1Hash for RSA-OAEP
adamjmcgrath Aug 6, 2026
563cab1
http2: avoid uaf while receiving and sending rst_stream
Eusgor Jul 17, 2026
ffe1e7c
build: update binary-upload to use correct tarball name
sxa Aug 16, 2026
17d2b06
tools: update BoringSSL pin on v26.x
panva Aug 22, 2026
0e87576
crypto: remove obsolete BoringSSL shims
panva Aug 20, 2026
137ff67
crypto: use available BoringSSL APIs
panva Aug 20, 2026
c18b0aa
repl: add basic syntax highlighting
avivkeller Jul 19, 2026
df48191
zlib: add ZipEntry, ZipFile, and ZipBuffer
pipobscure Aug 1, 2026
8e848d9
zlib: reject ambiguous ZIP archive ends
mcollina Aug 6, 2026
575260d
zlib: validate central directory record count
mcollina Aug 12, 2026
e3fda69
test_runner: extend tag filter with boolean expression DSL
atlowChemi Aug 13, 2026
72c37b1
sqlite: expose prepared statement statistics
geeksilva97 Aug 13, 2026
87ee7bf
test: cover `realpathSync` resolving symlinks after a FIFO stat
unstubbable Aug 13, 2026
be2ab89
ffi: reject detached ArrayBuffers as pointers
trivikr Aug 13, 2026
eacd65e
ffi: reject detached ArrayBufferViews
trivikr Aug 13, 2026
6ca9c1e
util: preserve function names without source map names
privatenumber Aug 13, 2026
922d47c
src: escape Windows environment variables in task runner
aduh95 Aug 13, 2026
fbec4eb
benchmark: complete the sqlite is-transaction fix
geeksilva97 Aug 13, 2026
501f816
crypto: improve SubtleCrypto.supports() accuracy
panva Aug 13, 2026
6bffc30
meta: move one or more collaborators to emeritus
nodejs-github-bot Aug 13, 2026
ebbe4af
tools: fix linter when `permittedInsecurePackages` is empty
aduh95 Aug 13, 2026
eb095a9
typings: add internal_only_v8 binding typeis
HoonDongKang Aug 14, 2026
9b4f349
ffi: refresh cached string buffers on every call
trivikr Aug 14, 2026
31742f2
test: cover ZIP header-confusion and DoS guards
pipobscure Aug 4, 2026
55b0495
zlib: reject local/central ZIP header mismatch
pipobscure Aug 4, 2026
2bda6db
zlib: do not hang archiving a FIFO or device
pipobscure Aug 4, 2026
00b687b
test: cover ZIP fd lifecycle and add rollback
pipobscure Aug 4, 2026
d29cc09
zlib: let a ZipFile read finish before close()
pipobscure Aug 4, 2026
1aafd19
zlib: roll back a failed add() directory rewrite
pipobscure Aug 4, 2026
e2f4ea0
doc: document http2 header constants
harjothkhara Aug 14, 2026
a9b31df
meta: add unified http api initiative
jasnell Aug 14, 2026
0998016
inspector: avoid calling into JS from V8 interrupts
joyeecheung Aug 14, 2026
bca3367
test: add a simple test for `import defer` of a CJS module
MayaLekova Aug 14, 2026
abb7a15
deps: update perfetto to 57.2
nodejs-github-bot Aug 14, 2026
46762da
deps: cherry-pick libuv/libuv@e640dc9
Aug 14, 2026
ab50ae6
doc: document open pull request limit
mcollina Aug 14, 2026
0876a29
stream: preserve falsy cancellation reasons
trivikr Aug 14, 2026
2989311
sqlite: reject connection access from authorizer callbacks
TrevorBurnham Aug 14, 2026
6302168
sqlite: add stmt persistent flag
araujogui Aug 14, 2026
5edffb5
stream: speed up async iteration of Readable
mcollina Aug 14, 2026
562168f
benchmark: apply `highWaterMark` in webstreams `pipe-to`
mcollina Aug 8, 2026
f7e0c81
stream: cut promise churn in webstreams hot paths
mcollina Aug 8, 2026
4d29742
stream: consolidate non-op algorithm callbacks
mcollina Aug 8, 2026
a77b1e6
doc: fix SQLite changeset constant descriptions
greenheadHQ Aug 15, 2026
63e6f2e
test: wait for FFI background optimization
trivikr Aug 15, 2026
009e376
quic: fix wake up blob
martenrichter Aug 15, 2026
7af0a96
test: use for-of instead of forEach
devfep Aug 15, 2026
bbb1226
sqlite: add diagnostic channel
araujogui Aug 15, 2026
9346570
test: convert forEach to for in test-constant.js file
Nixxy25 Aug 13, 2026
1d5e5e8
test: replace `forEach()` with `for...of` in parallel tests
pmarkert Aug 15, 2026
c644f2e
test: convert test-async-local-storage-bind to async loop
freida-code Aug 13, 2026
3b6a918
doc: add missing `added:` tags to `fs.lchmod`
lazerg Aug 16, 2026
9ea318d
doc: fix typo in onboarding.md
minirang Aug 17, 2026
676a122
doc: fix lint clean command
greenheadHQ Aug 17, 2026
4f6f2cf
stream: use validateNumber for BYOB reader options.min
greenheadHQ Aug 17, 2026
6a2e056
stream: use validateObject for zlib/iter params
greenheadHQ Aug 17, 2026
e6bfec9
sqlite: validate StatementSync.run() integers
trivikr Aug 17, 2026
815424d
stream: avoid leaking consumers on signal failure
trivikr Aug 17, 2026
215223d
typings: add watchdog internal binding types
leah-1ee Aug 17, 2026
5219e53
typings: add diagnostics_channel typings
leah-1ee Aug 17, 2026
d69bed2
debugger: wait for target startup
panva Aug 10, 2026
a5e5c7f
typings: add signal_wrap internal binding types
leah-1ee Aug 17, 2026
f373dab
util: use more primordials in `comparisons.js`
Ayoub-Mabrouk Aug 17, 2026
fdc1e78
test: enforce exit code in `test-http-server-stale-close`
aduh95 Aug 17, 2026
9024ec2
ffi: keep FFI functions non-constructible
trivikr Aug 17, 2026
0002f0a
ffi: remove dead null check in callback arguments
trivikr Aug 4, 2026
825fcfe
repl: add benchmarks
avivkeller Jul 19, 2026
613be79
src: add v8::Local specialization for MaybeStackBuffer
jasnell Aug 9, 2026
6c3516f
http: fix keylog listener setup on existing agent sockets
shani-singh1 Aug 17, 2026
8873b91
fs: fix close listener leak in FileHandle streams
Y1D7NG Aug 17, 2026
3da555a
build: pass target architecture to small-icu genccode
ulofiai Aug 17, 2026
24a76e1
test: avoid timer race in event loop delay test
trivikr Jul 25, 2026
a39ad67
deps: update googletest to 49495eacfdbda3f4b6ba219923fedbb2e3f99376
nodejs-github-bot Aug 18, 2026
0e8af33
sqlite: reuse cached column names in statement all() and get()
geeksilva97 Aug 18, 2026
695cd89
doc: add missing return types in buffer.md
inoway46 Aug 18, 2026
262f966
doc: add missing return types in fs.md
chasetonco Aug 18, 2026
4a784cb
doc: document per-architecture fast FFI argument limits
leah-1ee Aug 18, 2026
abfc51f
doc: document setRawMode write access on Windows
edemaine Aug 18, 2026
63583c4
doc: clarify copyFile symlink behavior
cookesan Aug 18, 2026
1a20d27
tools: bump undici from 6.27.0 to 6.28.0 in /tools/doc
dependabot[bot] Aug 18, 2026
7c09bd5
tools: fix man-page generation on Windows
Cherry Aug 18, 2026
3ed0492
doc: update security release prepare command
RafaelGSS Aug 18, 2026
89aba0c
doc: clarify how fs.Dirent file types are determined
soreavis Aug 18, 2026
f33dba7
string_decoder: decode UTF-8 via StringBytes::Encode
codebytere Aug 15, 2026
32bb197
src: use simdutf for two-byte strings in UTF-8 writes
codebytere Aug 15, 2026
a9dc50d
stream: reject pull on signal abort during flush
trivikr Aug 19, 2026
810929b
Revert "fs: fix close listener leak in FileHandle streams"
MikeMcC399 Aug 19, 2026
e2f952f
sqlite: prevent reentrant session.close()
trivikr Aug 19, 2026
77fedbd
fs: read small files in one thread pool round trip
codebytere Aug 19, 2026
43757d0
module: cache nearest parent package.json per directory
codebytere Aug 19, 2026
537feec
ffi: reject direct SharedArrayBuffer pointers
trivikr Aug 19, 2026
13e7d54
buffer: prevent string write offset overflow
mcollina Aug 19, 2026
33d7b4c
test: add closed-library assertions for getFunctions and getSymbols
Anshikakalpana Aug 19, 2026
9572a0b
test_runner: fix junit report on empty diagnostic
lazerg Aug 19, 2026
1fe7a1c
ffi: validate the value passed to the float setters
soulee-dev Aug 19, 2026
65f6750
doc: clarify that ipv4 mapped to ipv6 are classified as ipv6
gamemaker1 Aug 19, 2026
d286423
diagnostics_channel: validate before channel activation
trivikr Aug 20, 2026
9ec9383
stream: decouple transform backpressure changes
mcollina Aug 20, 2026
41c5108
quic: do not destroy incoming streams that have a consumer
trivenay Aug 20, 2026
83a7949
src: define O_SYNC, O_DSYNC and O_DIRECT on Windows
PickBas Aug 20, 2026
2de845b
fs: treat `std::errc::permission_denied` as `EPERM` error
PickBas Aug 20, 2026
340b983
src: run same-priority platform tasks in posting order
codebytere Aug 20, 2026
1a4f5e5
build,win: add PGO workload scripts
StefanStojanovic Aug 20, 2026
0369278
build: add simdutf dir to include path in GN build
codebytere Aug 20, 2026
ec956f2
quic: write desired size needs update on maxstream
martenrichter Jul 26, 2026
41edd2f
tools: make env variables consistent in cron jobs
aduh95 Aug 20, 2026
400d598
test_runner: add classname hierarchy for JUnit reporter
mag123c Aug 20, 2026
3619dc0
lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps
kimjune01 Aug 20, 2026
4cb6b13
deps: update simdjson to 4.6.7
nodejs-github-bot Aug 20, 2026
5c7c0b8
deps: update zlib to 1.3.2.1-motley-8002e91
nodejs-github-bot Aug 20, 2026
eb5d66e
module: report unreadable package.json
bitpshr Aug 20, 2026
109566a
crypto: fix missing error checks on ASN1_STRING_to_UTF8()
ndossche Aug 20, 2026
992af05
fs: fix out-of-bounds write in mkdtemp for long prefixes
frandle331-yh Aug 20, 2026
88d5f64
tools: bump brace-expansion in `/tools/clang-format`
dependabot[bot] Aug 21, 2026
152a326
dns: validate address type in lookupService
lazerg Aug 21, 2026
21655dc
child_process: keep SIGWINCH from killing on Win
PickBas Aug 21, 2026
fda8ee8
build: use build-ci for benchmark merge-commit rebuild
anonrig Aug 21, 2026
29f010f
test: fix Linux debug skip in SEA test guard
guhyunwoo Aug 21, 2026
fce6754
sqlite: reject busy statement finalization in authorizer
trivikr Aug 21, 2026
9d8d27d
doc: update outdated nodejs.org guide links
HoonDongKang Aug 21, 2026
96b91dc
doc: clarify socket destroyed behavior
dayun6530 Aug 21, 2026
235a0ba
test: use common/child_process spawnSync helpers
ganjanggejang Aug 21, 2026
60cb384
sqlite: remove unused column name helper
trivikr Aug 21, 2026
35b18b4
tools: fix max body length handler in `create-release-proposal.sh`
aduh95 Aug 21, 2026
dae4341
doc: fix broken TLS security level example
soreavis Aug 21, 2026
3770f9b
meta: move targos to emeritus
targos Aug 21, 2026
6f0c08b
tools: refactor `shell.nix` pkcs11 integration to its own section
aduh95 Aug 21, 2026
78175c6
tools: improve nix-changes coverage
aduh95 Aug 21, 2026
24cd694
doc: document that an empty OPENSSL_CONF skips config loading
orgads Aug 21, 2026
101a215
src: use simdutf for two-byte utf8 conversion
mertcanaltin Aug 21, 2026
1ad7ca3
test_runner: restore directory search for --test
bitpshr Jul 21, 2026
797ef40
test_runner: mock dual-package with conditional exports
maruthang Apr 25, 2026
5821362
module: do not split a portable compile cache by uid
codebytere Aug 21, 2026
6ec735c
sqlite: reject reentry while binding parameters
TrevorBurnham Aug 21, 2026
cce803b
test_runner: use run options with isolation="none"
inukshuk Mar 15, 2026
646221a
net: handle undefined parent in _unrefTimer and _destroy
Shivay-98 Jul 21, 2026
b6852e2
test: deflake test-net-listen-ipv6only
Han5991 Aug 22, 2026
1ad09f7
doc: fix broken GYP link in n-api.md
HoonDongKang Aug 22, 2026
eb1ebbb
util: fix formatting of functions returned from getters
gibson042 Aug 22, 2026
7670c81
ffi: prefer canonical type names
trivikr Aug 22, 2026
f0531f1
crypto: enable SIV and GCM-SIV modes in Cipher/Decipher APIs
panva Aug 22, 2026
0f36ee3
doc: remove outdated WASI version fallback
hyemimi Aug 22, 2026
a457631
tools: improve commit queue failure comment
panva Aug 22, 2026
e8e2abc
lib: load fewer builtins when bootstrapping without a snapshot
codebytere Aug 22, 2026
ddf9f9d
build: target Power 9 and z14
richardlau Aug 22, 2026
2cb96dd
benchmark: add test-only and mock timers cases
luanmuniz Aug 22, 2026
98e6272
http: cache maxHeaderPairs per header section
GetThatCookie Aug 22, 2026
b405e9b
src: fix out-of-bounds write when transcoding odd-length ucs2
Nashit-h Aug 22, 2026
c5cb6bc
fs: allocate FSReqPromise stat arrays lazily
MarshallOfSound Aug 22, 2026
6305a74
fs: pass symlink type in cp when filter is provided
shulaoda Aug 22, 2026
c4dbe14
url: speed up URLSearchParams
anonrig Aug 22, 2026
79c39c2
test_runner: print coverage and diagnostic info with dot reporter
mag123c Jan 18, 2026
4a1c9a7
esm: avoid super-linear data URL MIME regex
skdas20 Aug 22, 2026
acaf986
test: add Headers coverage and benchmark
anonrig Aug 22, 2026
c42fbcc
stream: avoid duplicated endReadableNT scheduling
mcollina Aug 23, 2026
5c9576b
quic: reset rejected HTTP/3 request streams with H3_REQUEST_REJECTED
trivenay Aug 23, 2026
788976c
dgram: don't swallow bind errors when callback is provided
armanmikoyan Aug 23, 2026
b71d5de
lib: use bracket notation instead of startsWith/endsWith for single char
kimtaejin3 Aug 23, 2026
2a64032
url: speed up WHATWG URL parsing
anonrig Aug 18, 2026
f032c22
url: skip unused href reuse comparison
anonrig Aug 19, 2026
9139389
quic: mark drain promise handled
jasnell Aug 23, 2026
74dcdbb
fs: fix glob early return skipping sibling entries
webdevelopersrinu Aug 23, 2026
d0447c9
quic: changes for nghttp3_conn_close_stream2
martenrichter Aug 23, 2026
97a437e
module: add a read-only mode to the compile cache
codebytere Aug 23, 2026
30f1a19
test: simplify test-timers-interval-promisified.js
HoonDongKang Aug 23, 2026
13f16d2
doc: fix broken links in cli.md
HoonDongKang Aug 23, 2026
9304dee
test: remove test-debugger-run-after-quit-restart as flaky on macOS
inoway46 Aug 23, 2026
359369e
test: use spawnSyncAndAssert in windowsHide test
ganjanggejang Aug 23, 2026
01cb4f9
test: convert forEach to for of test-messageevent-brandcheck file
nachiketap11 Aug 23, 2026
a77f9f7
stream: reuse unexposed managed read buffers
GetThatCookie Aug 23, 2026
4de7e63
test_runner: match dotfiles in default coverage exclude
semimikoh Aug 23, 2026
7e9204f
http: use intrusive lists in ConnectionsList
mcollina Aug 23, 2026
cf39500
tty: add raw-vt and io raw modes
samuel-williams-shopify Aug 23, 2026
bb499c3
repl: keep entries added while history file is loading
mhayk Aug 23, 2026
5fbf6c5
doc: fix property names in os.networkInterfaces() example
hanityx Aug 23, 2026
dc51c79
stream: drain pending writes before broadcast end
trivikr Aug 16, 2026
9e8e908
perf_hooks: add statistical hypothesis testing to histogram
jasnell Aug 20, 2026
74234ee
benchmark: add --analyze mode to compare.js
jasnell Aug 20, 2026
6673eba
fs: abort in-flight stat operations
mertcanaltin Aug 23, 2026
29d794b
src: fix heap value deduplication in embedder graph
IlyasShabi Aug 23, 2026
0afda47
stream: prevent share from eagerly draining source
trivikr Aug 23, 2026
f644853
util: fix OSC 8 hyperlink stripping in stripVTControlCharacters
dushyant-hada-90 Aug 24, 2026
bc1e19b
fs: fix realpath of namespaced drive paths
jazelly Aug 24, 2026
e3ae912
fs: use sized reads for large files in readFileUtf8
codebytere Aug 24, 2026
6409983
test: update WPT for WebCryptoAPI to e235e089b4
nodejs-github-bot Aug 24, 2026
c2c31d6
http: improve performance with known-length calls to end()
pimterry Aug 24, 2026
ac3c412
permission: enforce addon permission in GetLinkedBinding
RafaelGSS Aug 24, 2026
2a0b1ec
tls: throw on invalid ALPNProtocols instead of aborting
sankalpsthakur Aug 24, 2026
cb4b89c
util: allow single-line format when break length is infinite
hamidrezaghavami Aug 24, 2026
9e227ef
doc: update AHAFS reference link
ChocoChip0519 Aug 24, 2026
1d6ec2d
stream: encode whole chunks in TextEncoderStream
mcollina Aug 24, 2026
01a8ae0
permission: guard UDP handle adoption
RafaelGSS Aug 24, 2026
4232997
crypto: update root certificates to NSS 3.126
nodejs-github-bot Aug 25, 2026
8d39d0d
meta: add a root-level AGENTS.md
jasnell Aug 22, 2026
5b7d02e
stream: normalize fused stateless transform results
trivikr Aug 25, 2026
262f0ec
fs: stop stat()ing every entry in recursive readdir
codebytere Aug 25, 2026
b827c00
events: inline createEvent hybrid dispatch closure
slagiewka Jul 13, 2026
8d48adf
events: inline iterationCondition hybrid dispatch closure
slagiewka Jul 13, 2026
2161c94
2026-08-26, Version 26.8.0 (Current)
nodejs-github-bot Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 9 additions & 5 deletions .github/workflows/auto-start-ci.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# This action uses the following secrets:
# JENKINS_USER: GitHub user whose Jenkins token is defined below
# JENKINS_TOKEN: Jenkins token, to be used to start CI
name: Auto Start CI

on:
Expand Down Expand Up @@ -36,11 +39,13 @@ jobs:
-t '{{ range . }}{{ .number }} {{ end }}' \
--limit 5)" >> "$GITHUB_OUTPUT"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ github.token }}
start-ci:
permissions:
checks: read
contents: read
pull-requests: write
statuses: read
needs: get-prs-for-ci
if: needs.get-prs-for-ci.outputs.numbers != ''
runs-on: ubuntu-slim
Expand All @@ -59,16 +64,15 @@ jobs:
ncu-config set token "$GH_TOKEN"
ncu-config set jenkins_token "$JENKINS_TOKEN"
ncu-config set owner "$GITHUB_REPOSITORY_OWNER"
ncu-config set repo "$(echo "$GITHUB_REPOSITORY" | cut -d/ -f2)"
ncu-config set repo "${GITHUB_REPOSITORY#*/}"
env:
USERNAME: ${{ secrets.JENKINS_USER }}
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}
GH_TOKEN: ${{ github.token }}
JENKINS_TOKEN: ${{ secrets.JENKINS_TOKEN }}

- name: Start the CI
run: |
curl -fsSL "https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/tools/actions/start-ci.sh" \
| sh -s -- ${{ needs.get-prs-for-ci.outputs.numbers }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
2 changes: 1 addition & 1 deletion .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ jobs:
--arg devTools '[]' \
--arg benchmarkTools '[]' \
--run '
make -j4 V=1
make build-ci -j4 V=1
'
- name: Run benchmark
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/build-tarball.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ on:
- tools/eslint-rules/**
- tools/eslint/**
- tools/lint-md/**
- tools/nix/**
- typings/**
- vcbuild.bat
- .**
Expand Down Expand Up @@ -52,6 +53,7 @@ on:
- tools/eslint-rules/**
- tools/eslint/**
- tools/lint-md/**
- tools/nix/**
- typings/**
- vcbuild.bat
- .**
Expand Down Expand Up @@ -120,7 +122,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
with:
version: v0.16.0
version: v0.17.0
- name: Download tarball
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
Expand Down
160 changes: 117 additions & 43 deletions .github/workflows/commit-queue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,78 +22,152 @@ permissions:
contents: read

jobs:
get_mergeable_prs:
get_candidate_prs:
permissions:
pull-requests: read
if: github.repository == 'nodejs/node'
runs-on: ubuntu-slim
outputs:
numbers: ${{ steps.get_mergeable_prs.outputs.numbers }}
candidates: ${{ steps.get_candidate_prs.outputs.candidates }}
steps:
- name: Get Pull Requests
id: get_mergeable_prs
- name: Get Pull Request Candidates
id: get_candidate_prs
run: |
prs=$(gh pr list \
list_prs() {
gh pr list \
--repo "$GITHUB_REPOSITORY" \
--base "$GITHUB_REF_NAME" \
--label 'commit-queue' \
"$@" \
--json 'number' \
--search "created:<=$(date --date="2 days ago" +"%Y-%m-%dT%H:%M:%S%z") -label:blocked" \
-t '{{ range . }}{{ .number }} {{ end }}' \
--limit 100)
fast_track_prs=$(gh pr list \
--repo "$GITHUB_REPOSITORY" \
--base "$GITHUB_REF_NAME" \
--label 'commit-queue' \
--limit 100
}
aged_prs=$(list_prs \
--search "created:<=$(date --date="2 days ago" +"%Y-%m-%dT%H:%M:%S%z") -label:blocked")
fast_track_prs=$(list_prs \
--label 'fast-track' \
--search "-label:blocked" \
--json 'number' \
-t '{{ range . }}{{ .number }} {{ end }}' \
--limit 100)
numbers=$(echo $prs' '$fast_track_prs | jq -r -s 'unique | join(" ")')
echo "numbers=$numbers" >> "$GITHUB_OUTPUT"
--search "-label:blocked")
candidates=$(printf '%s %s\n' "$fast_track_prs" "$aged_prs" |
jq -r -s 'reduce .[] as $pr ([]; if index($pr) then . else . + [$pr] end) | join(" ")')
echo "candidates=$candidates" >> "$GITHUB_OUTPUT"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ github.token }}
commitQueue:
needs: get_mergeable_prs
if: needs.get_mergeable_prs.outputs.numbers != ''
needs: get_candidate_prs
if: needs.get_candidate_prs.outputs.candidates != ''
permissions:
checks: read
contents: read
pull-requests: read
statuses: read
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
# A personal token is required because pushing with GITHUB_TOKEN will
# prevent commits from running CI after they land. It needs
# to be set here because `checkout` configures GitHub authentication
# for push as well.
token: ${{ secrets.GH_USER_TOKEN }}

# Install dependencies
- name: Install Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ env.NODE_VERSION }}

- name: Install @node-core/utils
run: npm install -g @node-core/utils

- name: Set variables
run: |
echo "REPOSITORY=$(echo "$GITHUB_REPOSITORY" | cut -d/ -f2)" >> "$GITHUB_ENV"

- name: Configure @node-core/utils
run: |
ncu-config set branch "${GITHUB_REF_NAME}"
ncu-config set upstream origin
ncu-config set username "$USERNAME"
ncu-config set token "$GITHUB_TOKEN"
ncu-config set jenkins_token "$JENKINS_TOKEN"
ncu-config set repo "${REPOSITORY}"
ncu-config set owner "${GITHUB_REPOSITORY_OWNER}"
# Keep the config outside the workspace so checkout does not remove it.
ncu-config --global set branch "${GITHUB_REF_NAME}"
ncu-config --global set upstream origin
ncu-config --global set username "$USERNAME"
ncu-config --global set token "$GH_TOKEN"
ncu-config --global set jenkins_token "$JENKINS_TOKEN"
ncu-config --global set repo "${GITHUB_REPOSITORY#*/}"
ncu-config --global set owner "${GITHUB_REPOSITORY_OWNER}"
env:
USERNAME: ${{ secrets.JENKINS_USER }}
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
GH_TOKEN: ${{ github.token }}
JENKINS_TOKEN: ${{ secrets.JENKINS_TOKEN }}

- name: Filter Pull Requests
id: get_mergeable_prs
run: |
readme="${RUNNER_TEMP}/README.md"
curl -fsSLo "$readme" "https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/README.md"

numbers=
# shellcheck disable=SC2086
for pr in $CANDIDATES; do
metadata="${RUNNER_TEMP}/metadata-${pr}.json"
output="${RUNNER_TEMP}/metadata-${pr}.txt"
if git node metadata "$pr" \
--readme "$readme" \
--json > "$metadata" 2> "$output"; then
metadata_status=0
else
metadata_status=$?
fi

if [ -s "$output" ]; then
cat "$output"
fi

case "$metadata_status" in
0|2[0-9]|4[0-9]) ;;
*)
echo "git node metadata failed for pr ${pr} with exit code ${metadata_status}"
exit 1
;;
esac

metadata_exit_code=$(jq -r '.exitCode' "$metadata") || {
echo "failed to parse metadata JSON for pr ${pr}"
exit 1
}
if [ "$metadata_exit_code" != "$metadata_status" ]; then
echo "metadata JSON exitCode mismatch for pr ${pr}"
exit 1
fi
metadata_reason_codes=$(jq -r '.reasonCodes | join(", ")' "$metadata") || {
echo "failed to parse metadata reason codes for pr ${pr}"
exit 1
}

if [ "$metadata_status" -eq 0 ]; then
echo "pr ${pr} is ready for the commit queue"
numbers="$numbers $pr"
continue
fi

if [ "$metadata_status" -ge 20 ] && [ "$metadata_status" -le 29 ]; then
echo "pr ${pr} skipped, not ready to land"
echo "reason codes: ${metadata_reason_codes}"
continue
fi

echo "pr ${pr} will be handled by the commit queue"
echo "reason codes: ${metadata_reason_codes}"
numbers="$numbers $pr"
done

numbers=$(echo "$numbers" | xargs)
echo "numbers=$numbers" >> "$GITHUB_OUTPUT"
env:
CANDIDATES: ${{ needs.get_candidate_prs.outputs.candidates }}
GH_TOKEN: ${{ github.token }}

- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
if: steps.get_mergeable_prs.outputs.numbers != ''
with:
# A personal token is required because pushing with GITHUB_TOKEN will
# prevent commits from running CI after they land. It needs
# to be set here because `checkout` configures GitHub authentication
# for push as well.
token: ${{ secrets.GH_USER_TOKEN }}

- name: Start the Commit Queue
run: ./tools/actions/commit-queue.sh "${GITHUB_REPOSITORY_OWNER}" "${REPOSITORY}" ${{ needs.get_mergeable_prs.outputs.numbers }}
if: steps.get_mergeable_prs.outputs.numbers != ''
run: |
git config --local user.email "github-bot@iojs.org"
git config --local user.name "Node.js GitHub Bot"
ncu-config set token "$GH_TOKEN"
./tools/actions/commit-queue.sh ${{ steps.get_mergeable_prs.outputs.numbers }}
env:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux-without-intl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
with:
version: v0.16.0
version: v0.17.0
- name: Install gcovr
run: pip install gcovr==7.2
- name: Configure
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
if: github.base_ref == 'main' || github.ref_name == 'main'
uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
with:
version: v0.16.0
version: v0.17.0
- name: Install gcovr
run: pip install gcovr==7.2
- name: Configure
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/coverage-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ on:
- tools/eslint-rules/**
- tools/eslint/**
- tools/lint-md/**
- tools/nix/**
- typings/**
- .**
- '!.github/workflows/coverage-windows.yml'
Expand All @@ -49,6 +50,7 @@ on:
- tools/eslint-rules/**
- tools/eslint/**
- tools/lint-md/**
- tools/nix/**
- typings/**
- .**
- '!.github/workflows/coverage-windows.yml'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/major-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Major Release

on:
schedule:
- cron: 0 0 15 2,8 * # runs at midnight UTC every 15 February and 15 August
- cron: 0 0 15 2 * # runs at midnight UTC every 15 February

permissions:
contents: read
Expand Down
39 changes: 9 additions & 30 deletions .github/workflows/nix-changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ on:
- v[0-9]+.x
paths:
- '**.nix'
- tools/nix/**
- .github/workflows/nix-changes.yml
pull_request:
paths:
- '**.nix'
- tools/nix/**
- .github/workflows/nix-changes.yml
types: [opened, synchronize, reopened, ready_for_review]

Expand Down Expand Up @@ -47,7 +49,9 @@ jobs:
with:
fetch-depth: 2
persist-credentials: false
sparse-checkout: '*.nix'
sparse-checkout: |
shell.nix
tools/nix/
sparse-checkout-cone-mode: false

- uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
Expand All @@ -60,39 +64,14 @@ jobs:
name: nodejs

- name: Compute requisites after change
shell: bash # See https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference, we want the pipefail option.
run: |
nix-store --query --references "$(
nix-instantiate -I "nixpkgs=./tools/nix/pkgs.nix" shell.nix \
--arg devTools "
(import ./tools/nix/devTools.nix {})
++ builtins.attrValues (
{ inherit (import <nixpkgs> {}) nixfmt-tree sccache; }
// import ./tools/nix/openssl-matrix.nix {}
// import ./tools/nix/pkcs11.nix {}
)")" \
| xargs nix-store --realise \
| xargs nix-store --query --requisites \
| sort -k1.45 \
> requisites-${{ matrix.system }}-after.list
run: ./tools/nix/list-requisites.sh > requisites-${{ matrix.system }}-after.list

- name: Compute requisites before change
shell: bash # See https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference, we want the pipefail option.
# TODO(panva): add `// import ./tools/nix/pkcs11.nix {}` once landed
run: |
git reset HEAD^ --hard
nix-store --query --references "$(
nix-instantiate -I "nixpkgs=./tools/nix/pkgs.nix" shell.nix \
--arg devTools "
(import ./tools/nix/devTools.nix {})
++ builtins.attrValues (
{ inherit (import <nixpkgs> {}) nixfmt-tree sccache; }
// import ./tools/nix/openssl-matrix.nix {}
)")" \
| xargs nix-store --realise \
| xargs nix-store --query --requisites \
| sort -k1.45 \
> requisites-${{ matrix.system }}-before.list
# TODO(aduh95): remove this once list-requisites.sh has reached `main`
[ -f tools/nix/list-requisites.sh ] || git checkout FETCH_HEAD -- tools/nix/list-requisites.sh
./tools/nix/list-requisites.sh > requisites-${{ matrix.system }}-before.list

- name: Output diff
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stress-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
- name: Set up sccache
uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11
with:
version: v0.16.0
version: v0.17.0
# This is needed due to https://github.com/nodejs/build/issues/3878
- name: Cleanup
if: runner.os == 'macOS'
Expand Down
Loading
Loading