feat: upgrade to Node 24 and modernize build toolchain#1
Merged
dcoraboeuf merged 12 commits intoMay 6, 2026
Merged
Conversation
…ate self-test on vars.ONTRACK_URL
Contributor
Author
|
@dcoraboeuf here is the last in the batch for review |
Contributor
|
Available in v2.0.0 Thanks for your contributions @rathpc ! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrade
cli-configto Node 24, esbuild bundling (replacing@vercel/ncc), ESLint 10, real unit tests, standardized semantic-release with floating major/minor tags, and updatedCLAUDE.md. Pins to@nemerosa/ontrack-github-actions-module-install@^2.0.0(the new major from its just-merged Wave 1 upgrade).What changed
engines.nodeset to>=24;action.ymlruntime isnode24; CI workflow installs Node 24.@vercel/nccwithesbuild+esbuild-plugin-license(driven bybuild.js).dist/index.jsproduced by esbuild;dist/licenses.txtcarries third-party attributions.index.jsrefactored to a dependency-injection pattern. A top-level IIFE loads pure-ESM@actions/coreand@actions/execvia dynamic ESM import (namespace, not.default) and callsrunAction({core, exec, client}).@nemerosa/ontrack-github-actions-module-installstays as a top-levelrequire()since its CJS exports are preserved.index.test.jswith 12 unit tests covering input handling (url/token + env-var fallbacks), CLI invocation (env injection, custom env-vars, YONTRACK_CI_*), and output/env-var exports. Tests run in <500ms without secrets or network.@nemerosa/...module-installis mocked viajest.mock.@nemerosa/ontrack-github-actions-module-installbumped from^1.2.1to^2.0.0.@actions/*:core1.x → 3.x,exec1.x → 3.x.eslint8.x → 10.3.0 with new flat config..eslintrc.jsonand.eslintignoreremoved..releasercmatches the standardized template; floating-tag step force-updatesvXandvX.Yafter each release. Pre-release "commit dist" step removed — semantic-release's git plugin handles dist/ viaassets.actions/checkout@v4→@v6. Self-test gated onvars.ONTRACK_URL != ''so fork PRs don't fail on missing secrets.Why this is breaking
engines.node >= 24andruns.using: node24mean self-hosted runners on older Node will fail. GitHub-hosted runners support Node 24 natively.Test plan
v2.0.0if BREAKING CHANGE triggers a major bump)vXandvX.Yexist after releaseSquash-merge commit message