chore: upgrade actions to Node 24 runtime (SHA-pinned) - #62
chore: upgrade actions to Node 24 runtime (SHA-pinned)#62John C. Bland II (johncblandii) wants to merge 6 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Updates GitHub Actions workflow dependencies to SHA-pinned revisions that run on the Node 24 action runtime, reducing Node 20 deprecation warnings and improving supply-chain integrity via immutable pins.
Changes:
- Replaced floating
uses: ...@v*references with commit-SHA pins plus tag-version comments foractions/checkout,actions/setup-node,docker/metadata-action, andaws-actions/configure-aws-credentials. - Applied the same
actions/checkoutSHA pin to the CODEOWNERS validation workflow.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| .github/workflows/validate-codeowners.yml | Pins actions/checkout to a specific commit SHA with an upstream tag comment. |
| .github/workflows/lambda.yml | Pins multiple actions (setup-node, checkout, metadata-action, configure-aws-credentials) to specific SHAs with tag comments. |
Suppressed comments (1)
.github/workflows/lambda.yml:105
role-session-namereferences${{ env.IAM_ROLE_SESSION_NAME }}, but the workflow-levelenv:definesIAM_ROLE_SEESION_NAME(typo). As written, this expression will resolve to an empty string and can cause STS to use a default session name, making audit trails and debugging harder. Align the reference (or rename the env key) so the intended session name is actually used.
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
with:
aws-region: us-east-2
role-to-assume: ${{ env.IAM_ROLE_ARN_S3 }}
role-session-name: ${{ env.IAM_ROLE_SESSION_NAME }}
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Also fixed the pre-existing |
|
Same follow-up as ses-lambda-forwarder: the un-typo'd session name |
|
CI triage summary for |
CI triage for this PRbuild-test-distribute — pre-existing, needs a maintainer. The failing test is validate-codeowners — pre-existing, fixed in c39ef08. The |
The committed .env.test authenticates as GitHub App 217830 in the 'skedrocket' org, which no longer exists — the GitHub API returns 'Integration not found' unconditionally, so the test cannot pass for anyone. Skip with restoration notes rather than fail every build.
|
Deeper root cause on Maintainer follow-ups:
🤖 Addressed by Claude Code |
Erik Osterman (Cloud Posse) (osterman)
left a comment
There was a problem hiding this comment.
The workflow changes here are sound — all four SHAs verified against upstream tags, and the IAM_ROLE_SEESION_NAME typo fix is a real bug fix, not scope creep. Two things need to happen before this merges, though.
1. The skipped test needs a tracking issue, not just a code comment.
it.skip on lambdas › token-rotator › completes without error in apps/token-rotator/src/main.spec.ts is the only handler test in the repo. The only other specs are guard.spec.ts and stringHelpers.spec.ts, and libs/github has none at all — so this leaves the entire GitHub-auth → registration-token → SSM-put path with zero test coverage, in a credential-rotation service.
I accept the premise: it was failing 100% of the time on every branch, so no working coverage is lost. But right now CI goes green forever while the rotation path is untested, and the only record is an inline comment plus a PR comment. Please open an issue with an owner and reference it from the it.skip, so this doesn't quietly become permanent.
2. .env.test still contains a committed private key.
The private key for GitHub App 217830 (third-party skedrocket org) is sitting at the repo root in a public repo. You flagged it and nobody has acted. The app is dead so the key is inert, but that's a bad thing to leave in the tree — please delete it here, and let's scrub it from history separately.
One operational note, not blocking: the session-name fix changes the STS session name from cloudposse/token-rotator/ci to cloudposse-token-rotator-ci (AWS rejects slashes — [\w+=,.@-]*). It was resolving to empty string before, so this is strictly better, but anyone reading CloudTrail for the cplive-core-ue2-public-lambda-artifacts-gha role should know the string changed.
Also odd next to a "Node 24 runtime" title: the job still installs Node 16.x (EOL) to build the Lambda. Untouched by this PR, but worth a follow-up.
Confirmed for the record: no IAM role, trust policy, or permissions changes — permissions: stays id-token: write / contents: read, and no auth logic or key-handling code was modified.
Replaces the dead skedrocket App credentials in .env.test with placeholders (key remains in git history — inert, App deleted) and references the tracking issue from the skipped handler test.
|
Erik Osterman (Cloud Posse) (@osterman) — both done in 4e416f9:
🤖 Addressed by Claude Code |
what
SHA-pinned with precise version comments:
actions/setup-node@v4→@82076278...# v7.0.0actions/checkout@v4→@3d3c42e5...# v7.0.1docker/metadata-action@v5→@dc802804...# v6.2.0aws-actions/configure-aws-credentials@v4→@e6de0542...# v6.2.3why
are already being force-migrated to Node 24
matching the org's direction in chore: upgrade actions to Node 24 runtime and enforce SHA pinning .github#261
references
still on Node 20
mszostok/codeowners-validator@v0.5.0— Docker-based action, not affected by the Node runtime deprecation; no Node 24 release existscloudposse/github-action-auto-release@v1— composite action not in the upgrade matrix; left as-is