Skip to content

build(config-ui): move to Node 26 LTS and Yarn 4.18.1 - #9383

Open
DoDiODev wants to merge 1 commit into
apache:mainfrom
DoDiODev:pr/wave16-node26
Open

DoDiODev wants to merge 1 commit into
apache:mainfrom
DoDiODev:pr/wave16-node26

Conversation

@DoDiODev

Copy link
Copy Markdown
Contributor

⚠️ Pre Checklist

Please complete ALL items in this checklist, and remove before submitting

  • I have read through the Contributing Documentation.
  • I have added relevant tests. (N/A: toolchain change; the existing
    config-ui tests and build cover it)
  • I have added relevant documentation. (N/A)
  • I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

Summary

Node 26 is now the active LTS line, so this moves the config-ui toolchain
from Node 24 to Node 26:

  • config-ui/package.json (volta.node, volta.yarn, packageManager) and
    config-ui/.tool-versions pin Node 26.13.1 and Yarn 4.18.1.
  • .github/workflows/config-ui.yml uses node-version: '26'.
  • The Docker builder moves from node:24 to node:26-trixie-slim.
  • Yarn 4.17.0 → 4.18.1 (.yarn/releases, .yarnrc.yml). The only
    yarn.lock change is the checksum of Yarn's built-in resolve compat patch.

Node 25+ official images no longer bundle Yarn or Corepack, so a plain
RUN yarn install fails with exit code 127. The Dockerfile now runs the Yarn
release that is already checked in under .yarn/releases (the yarnPath
from .yarnrc.yml), so the image no longer needs a global Yarn at all.

The Dependabot comments are refreshed as well: the Docker example now reads
node:26 -> node:27, the Python note refers to the python constraint in
the pyproject.toml files (installed with uv) instead of the Poetry
lockfiles, the MySQL tag example is current, and the reason for ignoring
node majors no longer says that Node 26 is not an LTS release.

Does this close any open issues?

N/A

Screenshots

N/A

Other Information

Validated locally with Node 26.13.1 and Yarn 4.18.1:

  • yarn install --immutable: OK (peer warnings unchanged from Node 24)
  • yarn tsc: OK; eslint: 0 errors, the same 24 warnings as on main
  • yarn build: OK; dist/ is byte-identical to the Node 24 build
  • yarn test: 87/87 passed
  • docker build config-ui: OK (node:26-trixie-slim = 26.13.1); dist/
    inside the image is byte-identical, and the container serves GET /
    with 200 and no nginx errors

Fork CI on the same change (config-ui on Node 26, plus golangci-lint,
unit-test, e2e on MySQL and PostgreSQL, license header, Grafana check):
https://github.com/DoDiODev/devlake/actions/runs/43183439929 (16/16 jobs green)

Node 26 is the active LTS line, so the config-ui toolchain moves from
Node 24 to Node 26 (Volta, .tool-versions, config-ui workflow) and the
Docker builder from node:24 to node:26-trixie-slim. Yarn is bumped to
4.18.1; the lockfile change is limited to the checksum of Yarn's builtin
resolve compat patch.

Node 25+ official images no longer bundle Yarn or Corepack, so the
Dockerfile now runs the Yarn release checked in under .yarn/releases
(the yarnPath from .yarnrc.yml) instead of relying on a global yarn.

The production bundle (dist/) is byte-identical to the Node 24 build.

Also refresh the Dependabot comments: node:26 -> node:27 example, the
Python note now refers to the pyproject.toml constraint installed with uv,
the current MySQL tag, and the reason the node major is ignored.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
DoDiODev added a commit to DoDiODev/devlake that referenced this pull request Nov 12, 2026
Node 26 is LTS and wave 16 is open upstream as apache#9383,
so the gate no longer needs watching.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant