feat: upgrade to Node 24 and modernize build toolchain#1
Merged
dcoraboeuf merged 15 commits intoMay 5, 2026
Merged
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix esbuild-plugin-license import to use .default (ESM-wrapped CJS interop). Rebuild produces dist/index.js + dist/index.js.map via esbuild; removes stale ncc artifact dist/sourcemap-register.js. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ting tags, self-test)
Contributor
Author
|
@dcoraboeuf here is the second in the batch following this one nemerosa/ontrack-github-actions-module-install#1 |
…/licenses.txt
The `thirdParty.output` was set to a string (`'dist/licenses.txt'`) but
esbuild-plugin-license requires an object `{file, template}`. The string
form silently no-op'd, leaving dist/licenses.txt as the stale ncc-era file
and creating a stray dependencies.txt at project root from the plugin's
default fallback.
Fix: pass `output: { file: 'dist/licenses.txt', template(dependencies) {...} }`
so the plugin writes real per-package attributions. Regenerated dist/licenses.txt
(31 KB, esbuild-plugin-license format). Removed stray dependencies.txt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
Author
|
@dcoraboeuf the workflow was failing previously on the "self-test" step. A change was made to include another gate which should fix the problem. Please run again when you can, thank you! |
Contributor
|
@rathpc, I'm on it. Side note: please note that since Yontrack V5, there is a new way of configuring your projects: https://docs.yontrack.com/yontrack/ref/latest/content/configuration/ci-config.html. It may worth having a look. |
Contributor
|
Available in v1.0.0 Thanks for your contribution @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-buildto Node 24, esbuild bundling (replacing@vercel/ncc), ESLint 10, real unit tests with mocked GitHub Actions deps, and a standardized semantic-release flow with floating major/minor tags. AddsCLAUDE.md.This is the Wave 2 canary for the broader
ontrack-github-actions-*upgrade effort. The recipe validated here will apply tocli-setup,cli-validation,cli-config, andcli-installin subsequent PRs.What changed
engines.nodeset to>=24;action.ymlruntime isnode24; CI workflow installs Node 24.action.yaml→action.ymlfor consistency across the repo family.runs.usingbumped fromnode16tonode24.@vercel/nccwithesbuild+esbuild-plugin-license(driven by a smallbuild.js).dist/index.jsis now produced by esbuild;dist/licenses.txtcarries third-party attributions (matching ncc's--licensesemantics).index.jsrefactored to a dependency-injection pattern. A top-level IIFE loads pure-ESM@actions/*packages via dynamic ESM import and calls an exportedrunAction({core, exec, github})function. This pattern is necessary because@actions/core@3,@actions/exec@3, and@actions/github@9are pure ESM and can no longer berequire()'d from CJS.index.test.jswith 14 unit tests covering input handling, fallbacks (project → repo name; branch → ref parse; build → run number), conditional CLI args (release, run-info),setWorkflowRuninvocation, and the executable input. Tests run in <200ms without any secrets or network.eslint8.x → 10.3.0 with new flat config (eslint.config.mjs). Companion@eslint/jspinned to^10.0.1(latest published — the@eslint/jspackage versions independently fromeslintitself).BREAKING CHANGE:footer always forces major. New.releasercmatches the standardized template across the repo family.vXandvX.Ytags after each release, so consumers can pin to@v2and ride patch updates.CLAUDE.md;README.md"Building" section updated for esbuild..github/workflows/build.yml(which lacked lint/test/release) replaced by.github/workflows/ci.ymlwith the standardized template (actions/checkout@v6,actions/setup-node@v6, full lint+build+test+release pipeline).Why this is breaking
engines.node >= 24andruns.using: node24mean self-hosted runners on older Node will fail. GitHub-hosted runners support Node 24 natively. Hence theBREAKING CHANGE:footer in the squash-merge commit, whichsemantic-releasewill use to bump this action to2.0.0.The action's input/output surface is unchanged. Workflows currently using
@v1continue to work against the existing v1 release (untouched); they need to opt into@v2to get Node 24.Test plan
nemerosaowner and won't run from the fork — that's expected)mainbuild runssemantic-releaseand creates thev2.0.0GitHub releasev2andv2.0exist and point at the new release SHACHANGELOG.mdreflects the breaking changedist/licenses.txtis generated alongside the bundleSquash-merge commit message
When merging, please use this exact commit body: