ci: bump GitHub Actions to Node.js 24 and fix brew warnings - #53
Conversation
Build Artifacts
Built from 2a62c87. Artifacts expire after 90 days. |
Greptile SummaryThis PR updates CI workflows for newer GitHub Actions runtimes. The main changes are:
Confidence Score: 5/5This looks safe to merge. No blocking issues found in the changed code. Files Needing Attention: No files need attention.
What T-Rex did
|
| Filename | Overview |
|---|---|
| .github/actions/setup-msvc/action.yml | Adds a local composite action that runs vcvarsall.bat and exports the MSVC environment for later Windows build steps. |
| .github/workflows/ci.yml | Updates CI action versions, uses the local MSVC setup action, and checks for pkgconf before installing the macOS dependency. |
| .github/workflows/release.yml | Updates release workflow action versions and switches the Windows release build to the local MSVC setup action. |
| .github/workflows/label.yml | Updates the labeler action version. |
| .github/workflows/release-please.yml | Updates the release-please action version. |
Comments Outside Diff (1)
-
General comment
Release macOS dependency step still lacks the Homebrew installed guard
- Bug
- The PR objective says the workflows avoid Homebrew already-installed warnings, and the CI workflow now uses
brew list pkgconf &>/dev/null || brew install pkg-config. However, the release workflow's macOS build still runsbrew install pkg-configdirectly at.github/workflows/release.yml:42. On GitHub macOS runners wherepkgconf/pkg-configis already present, release builds can still produce the warning/noise this PR intends to eliminate.
- The PR objective says the workflows avoid Homebrew already-installed warnings, and the CI workflow now uses
- Cause
- The Homebrew guard was applied to
.github/workflows/ci.ymlbut not mirrored in.github/workflows/release.yml, even though both workflows install the same macOS build dependency.
- The Homebrew guard was applied to
- Fix
- Update
.github/workflows/release.ymlline 42 to use the same guarded install pattern as CI, e.g.brew list pkgconf &>/dev/null || brew install pkg-config, and consider keeping the explanatory comment consistent between CI and release workflows.
- Update
- Bug
Reviews (2): Last reviewed commit: "ci: extend Node 24 migration to release ..." | Re-trigger Greptile
Bump all actions to their latest Node.js 24-compatible major versions: - actions/checkout v4 → v6 - actions/cache v4 → v5 - actions/upload-artifact v4 → v7 - actions/github-script v7 → v9 - actions/labeler v5 → v6 - amannn/action-semantic-pull-request v5 → v6 Replace ilammy/msvc-dev-cmd@v1 (no Node.js 24-compatible release) with an inline PowerShell step that runs vcvarsall.bat directly and exports only the changed env vars to GITHUB_ENV. Fix macOS "already installed" brew warnings for openssl and pkgconf by checking `brew list` before attempting install. Node.js 20 will be removed from GitHub Actions runners on 2026-09-16. These changes eliminate all 9 Node.js 20 deprecation annotations and both brew warnings from CI runs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The original change covered ci.yml and label.yml only, leaving release.yml and release-please.yml on Node 20 actions. That is the worse half to miss: CI would keep working while the release pipeline broke unattended, with signing and notarization in the loop. Verified each action's declared runtime rather than assuming from version numbers. Actions still on node20 and therefore bumped here: actions/download-artifact v4 -> v8 (release.yml, 3 uses) googleapis/release-please-action v4 -> v5 ilammy/msvc-dev-cmd v1 no node24 release exists Also aligned release.yml with the majors already chosen for ci.yml (checkout v6, cache v5, upload-artifact v7). upload-artifact v7 and download-artifact v8 are the matched pair: v7 adds direct uploads and v8 is the release that understands them. msvc-dev-cmd is replaced by a local composite action rather than a second copy of the inline PowerShell, so the two workflows cannot drift. The script is hardened over the original: it validates vswhere, the VS install and vcvarsall.bat, checks the exit code, refuses multi-line values that would corrupt GITHUB_ENV, and fails when no variables are exported. The previous version exited green on every one of those paths and surfaced as "cl.exe not found" much later in the build. Resolved the rebase conflict in favour of master: the openssl brew guard is gone, since #57 replaced OpenSSL with vendored tiny-AES-c. Not fixed: sslcom/esigner-codesign has no node24 release at any tag, so Windows code signing remains on node20 and needs an upstream release or a direct CodeSignTool invocation.
6d7e37d to
c341e41
Compare
|
@developeritsme Requested your review on this one. Since you rebased the branch and added Current state:
Could you give it a formal review/approve when you have a moment? Thanks 🙏 |
|
Heads up @dugyen: I rebased this onto master and extended the scope, so the branch now has commits you did not write. Your original head is preserved locally as Why the scope grewThe branch covered Runtime auditI checked each action's declared runtime rather than inferring from version numbers, and the picture was different from what the description assumed. Most of what this PR bumped was already Node 24 at the old pin. What was actually still on node20:
ChangesRebase conflict was the brew step. Resolved toward master, since #57 replaced OpenSSL with vendored tiny-AES-c and the openssl guard no longer applies. MSVC setup moved to a local composite action ( I also hardened the script. The original had a silent-failure path worth calling out: if One subtlety worth preserving: the step has to stay on Version choices. I kept the majors you already picked (checkout v6, cache v5) instead of jumping to the newest available (v7, v6). Both are Node 24, so moving further adds breaking-change review for no benefit against the actual goal. The one place I did go to latest is the artifact pair: Not fixed
Since 2026-06-16 GitHub already runs node20-declaring actions on Node 24 by default, and the v1.11.3 release on 2026-06-30 signed both What is left is a stale declaration rather than a breakage. The 2026-09-16 removal takes away the What CI cannot tell us here
|
Summary
checkoutv4→v6,cachev4→v5,upload-artifactv4→v7,github-scriptv7→v9,labelerv5→v6,action-semantic-pull-requestv5→v6ilammy/msvc-dev-cmd@v1(no Node 24 release exists) with an inline PowerShell step that runsvcvarsall.batand exports the env diff to$GITHUB_ENVbrew listbefore installNode.js 20 will be removed from GitHub Actions runners on 2026-09-16. These changes eliminate all deprecation annotations from CI runs.
Test plan
🤖 Generated with Claude Code