Skip to content

ci: bump GitHub Actions off the deprecated Node 20 runtime#82

Merged
danielPoloWork merged 1 commit into
masterfrom
ci/bump-actions-off-node20
Jun 14, 2026
Merged

ci: bump GitHub Actions off the deprecated Node 20 runtime#82
danielPoloWork merged 1 commit into
masterfrom
ci/bump-actions-off-node20

Conversation

@danielPoloWork

Copy link
Copy Markdown
Owner

Summary

GitHub is retiring the node20 Actions runtime. Every GitHub-authored action in
this 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
node20 is removed.

CI / build only — no API / ABI / behaviour change, no version bump.

Action bumps

Action Before (node20) After (node24) Used in
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 (composite) v5 docs-site
DavidAnson/markdownlint-cli2-action v16 v23 docs

The upload-artifact v7 / download-artifact v8 pair share the same v4-era artifact
backend, and upload-pages-artifact v5 pairs with deploy-pages v5.

The MD060 knob (markdownlint bump)

markdownlint-cli2-action@v23 bundles a newer markdownlint that adds the MD060
(table-column-style)
rule, which was absent — and therefore unenforced — under the
previously-pinned @v16. That rule wants byte-aligned table pipes, which the
CJK-width tables in docs/i18n/ (zh-Hans / ja) cannot satisfy. MD060 is disabled
in .markdownlint.json so the bump preserves the prior
behaviour
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 84
tracked markdown files
with MD060 off.

Left intentionally unchanged

  • ilammy/msvc-dev-cmd@v1 — still node20, but no Node 24 release exists
    upstream yet
    (latest tag is a v1.x patch). This is now the only remaining
    node20 dependency; revisit when upstream ships a node24 major.
  • lukka/get-cmake@latest — already resolves to a Node 24 release.
  • lycheeverse/lychee-action@v2 — a composite action with no node20 runtime of
    its own.

Validation

  • All four workflow YAMLs parse; .markdownlint.json is valid JSON.
  • markdownlint (latest) → 0 errors across 84 tracked files with MD060 disabled.
  • python tools/consistency_lint.pyOK.

🤖 Generated with Claude Code

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 danielPoloWork merged commit ca35978 into master Jun 14, 2026
34 checks passed
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>
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