ci: bump GitHub Actions off the deprecated Node 20 runtime#82
Merged
Conversation
GitHub is retiring the node20 actions runtime; every GitHub-authored action in the workflows ran on it. Bump each to its current Node 24 major: - actions/checkout v4 -> v6 (ci, docs, docs-site, release) - actions/upload-artifact v4 -> v7 (release) - actions/download-artifact v4 -> v8 (release) - actions/deploy-pages v4 -> v5 (docs-site) - actions/upload-pages-artifact v3 -> v5 (docs-site; pairs with deploy-pages v5) - DavidAnson/markdownlint-cli2-action v16 -> v23 (docs) The markdownlint-cli2-action bump pulls in a newer markdownlint that adds the MD060 (table-column-style) rule. Disable MD060 in .markdownlint.json: the CJK-width tables in docs/i18n/ cannot satisfy byte-aligned table pipes, and the rule was absent (hence unenforced) under the prior pinned action — so this preserves existing behaviour rather than introducing churn. Left as-is: - ilammy/msvc-dev-cmd@v1 — still node20, but no Node 24 release exists upstream yet (latest tag is v1.x); the only remaining node20 dependency, to revisit when upstream ships a node24 major. - lukka/get-cmake@latest — already resolves to a node24 release. - lycheeverse/lychee-action@v2 — composite action, no node20 runtime of its own. Validation: all four workflow YAMLs parse; .markdownlint.json is valid JSON; the latest markdownlint (v0.40.0, as bundled by the v23 action) reports zero errors across all 84 tracked markdown files with MD060 disabled; consistency lint passes. CI / build only — no API/ABI/behaviour change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
danielPoloWork
added a commit
that referenced
this pull request
Jun 14, 2026
…83) ## Summary Adds a `packaging-smoke` CI workflow that exercises the two Phase-2 packaging recipes end to end — the **vcpkg overlay port** (ADR-0030) and the **Conan 2.x recipe** (ADR-0031). Neither could be validated anywhere before: vcpkg and Conan are not installable on the maintainer's box, and no CI job covered them. ## What the jobs do - **vcpkg** — installs the overlay port in classic mode (exactly as `ports/README.md` documents), then configures + builds + runs a small consumer that does `find_package(pbr_memory_pool CONFIG REQUIRED)` and links `pbr::memory_pool`. New fixture under `ci/packaging-smoke/vcpkg-consumer/`. - **Conan** — `pipx install conan`, `conan profile detect`, then `conan create conan/ --build=missing`, which builds the package from the pinned tag and builds + runs the existing `conan/test_package/`. ## Scope & triggers Both recipes fetch the **SHA-pinned `v1.0.0` source tag**, so the jobs validate the *recipes against the released artifact* on current toolchains — not the working tree (an in-tree CMake change does not reach a version-pinned recipe until a release is tagged and the recipe re-pinned). The path filter is therefore limited to `ports/**`, `conan/**`, `ci/packaging-smoke/**`, and the workflow itself; a **weekly schedule** (Mondays 06:00 UTC) runs them regardless to catch toolchain / registry drift on the otherwise-static recipes. `workflow_dispatch` is enabled for manual runs. Uses node24-era actions (`actions/checkout@v6`), consistent with the recent runtime bump (#82). ## Docs - `CHANGELOG.md` — Unreleased › Added entry. - `ports/README.md` and `conan/README.md` — each gains a "CI smoke test" section. ## Verification - `python tools/consistency_lint.py` → OK (mandatory pre-PR gate). - vcpkg consumer mirrors the public surface of `conan/test_package/src/example.cpp`; API checked against `memory_pool.hpp` / `typed_pool.hpp` (`Pool(block_size, block_count)`, `try_allocate`, `deallocate`, `block_size`; `TypedPool<T>` `construct` / `destroy`). - Workflow itself can only be exercised on GitHub-hosted runners — that is the point of the PR; CI will run both jobs here. CI only; no API change. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
GitHub is retiring the
node20Actions runtime. Every GitHub-authored action inthis repo's workflows still ran on it; this PR moves each to its current Node 24
major so the workflows stop emitting deprecation warnings and keep working once
node20is removed.CI / build only — no API / ABI / behaviour change, no version bump.
Action bumps
actions/checkoutv4v6actions/upload-artifactv4v7actions/download-artifactv4v8actions/deploy-pagesv4v5actions/upload-pages-artifactv3(composite)v5DavidAnson/markdownlint-cli2-actionv16v23The
upload-artifactv7 /download-artifactv8 pair share the same v4-era artifactbackend, and
upload-pages-artifactv5 pairs withdeploy-pagesv5.The
MD060knob (markdownlint bump)markdownlint-cli2-action@v23bundles a newer markdownlint that adds theMD060(table-column-style) rule, which was absent — and therefore unenforced — under the
previously-pinned
@v16. That rule wants byte-aligned table pipes, which theCJK-width tables in
docs/i18n/(zh-Hans / ja) cannot satisfy.MD060is disabledin
.markdownlint.jsonso the bump preserves the priorbehaviour rather than turning a green tree red on a purely cosmetic rule. Verified:
the latest markdownlint (v0.40.0, as bundled by
@v23) reports 0 errors across all 84tracked markdown files with
MD060off.Left intentionally unchanged
ilammy/msvc-dev-cmd@v1— stillnode20, but no Node 24 release existsupstream yet (latest tag is a
v1.xpatch). This is now the only remainingnode20dependency; revisit when upstream ships anode24major.lukka/get-cmake@latest— already resolves to a Node 24 release.lycheeverse/lychee-action@v2— a composite action with nonode20runtime ofits own.
Validation
.markdownlint.jsonis valid JSON.markdownlint(latest) → 0 errors across 84 tracked files withMD060disabled.python tools/consistency_lint.py→ OK.🤖 Generated with Claude Code