Skip to content

[chore]: run CI on Node.js 24.22.1 or later and upgrade pip and certifi for the release scripts - #1478

Merged
sf-tyler-jeong merged 2 commits into
mainfrom
chore/ci-runtime-ca-update
Oct 27, 2026
Merged

sf-tyler-jeong merged 2 commits into
mainfrom
chore/ci-runtime-ca-update

Conversation

@sf-tyler-jeong

@sf-tyler-jeong sf-tyler-jeong commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

A major-only node-version is satisfied by whatever matching release the runner already has in its tool cache, so '24' picked up the cached 24.21.0 on the latest build-and-test run, and the Storybook deploy still asked for 18.x. Node.js 24.22.1 updates the bundled root certificates to NSS 3.131.1 and rejects certificate chains through the eMudhra (emSign) intermediates whose private keys were reported compromised in October 2026. npm, yarn and corepack verify TLS with the CA store of the Node that runs them, so every workflow now asks for 24.22.1 or later.

The release job also runs Python helper scripts that use requests, which verifies TLS against certifi's bundle rather than the OS store, so a runner image update does not reach it. Those scripts ran on the runner's system Python and pip with no version set by the workflow. The job now sets up its own Python, upgrades pip, and installs certifi 2026.10.19 or later, the release that drops the affected emSign root (pip 26.2.2 vendors the same one).

Changes

  • Node.js — every actions/setup-node step now sets node-version: '>=24.22.1 <25': build-and-test.yml, coverage.yml, deploy-github-pages.yml, package-publish.yml, prepare-changelog.yml, release-workflow.yml. A cached 24.x that satisfies the range is used as before; otherwise setup-node downloads the newest matching release from the actions/node-versions manifest. The upper bound keeps every workflow on the 24 line that build-and-test and the release already use.
  • Storybook deploy — deploy-github-pages.yml moves from Node 18 to 24 with this. bitovi/github-actions-storybook-to-github-pages is a composite action that runs yarn install and yarn build:storybook on the Node set up in the step before it, so this input alone decides which Node builds Storybook.
  • Release job Python — release-workflow.yml now starts with actions/setup-python@v7 (Python 3.12) and a step that upgrades pip, installs requests with certifi>=2026.10.19, and prints the pip and certifi versions it ended up with. The existing pip3 install requests and python3 … calls resolve to this interpreter and find requests already installed. Both steps come first so that Jira - Rollback on failure, which runs when any later step fails, gets the same interpreter.
  • actions/setup-python is referenced by tag, as every other action in these workflows is.

Backward compatibility

No changes to the published package — only files under .github/workflows/ change. yarn api:snapshot leaves api/surface.d.ts unchanged and yarn package:check passes.

Testing

  • CI on this PR: build-and-test's Setup Node.js step resolved '>=24.22.1 <25' to Node.js 24.22.1 (Acquiring 24.22.1 - x64 from …/node-24.22.1-linux-x64.tar.gz; node v24.22.1, npm 11.19.1, yarn 3.5.0), and every step passed with 1330 tests passing, 9 skipped (job log).
  • Locally on Node.js 24.22.1, the build-and-test job's commands in order: yarn install --immutable, yarn lint, yarn typecheck, yarn build, yarn api:snapshot (no change to api/surface.d.ts), yarn package:check, yarn test (1330 passed, 9 skipped) — all pass.
  • Locally on Node.js 24.22.1, the Storybook deploy's commands: yarn install and yarn build:storybook succeed, and the generated index.json has the same 56 entries as the Storybook currently published to GitHub Pages, which was built on Node 18.20.8.
  • '>=24.22.1 <25' evaluated with semver against the actions/node-versions manifest resolves to 24.22.1; the cached 24.21.0 does not satisfy it.
  • yarn lint · yarn typecheck · yarn build · yarn test · yarn build:apps:testing · yarn api:snapshot · yarn package:check pass on Node.js 24.22.1.
  • All six workflow files parse as YAML, and the release job's first two steps are the new Python steps.

Changelogs

  • CI and release workflows run on Node.js 24.22.1 or later, and the release scripts on an upgraded pip with certifi 2026.10.19 or later (internal)

A major-only node-version is satisfied by any 24.x already in the runner's
tool cache, so '24' picked up 24.21.0 on the last build-and-test run, and
the Storybook deploy still asked for 18.x. Node.js 24.22.1 updates the
bundled root certificates to NSS 3.131.1 and rejects chains through the
eMudhra (emSign) intermediates whose keys were reported compromised in
October 2026. npm, yarn and corepack verify TLS with the CA store of the
Node that runs them, so they follow the same version.

All six setup-node steps now ask for '>=24.22.1 <25'. A cached 24.x that
satisfies the range is used as before; otherwise setup-node downloads the
newest matching release from its manifest. The upper bound keeps the
workflows on the 24 line the repository already builds and publishes with.

The Storybook deploy moves from 18 to 24 with this. `yarn build:storybook`
on 24.22.1 produces the same 56 index entries as the Storybook currently
published from 18.20.8.
The release job installed requests with the runner's system pip3 and ran
its helper scripts on the system python3, so nothing in the workflow set
the pip version or a floor for certifi. requests verifies TLS against
certifi's bundle rather than the OS store, so a runner image update does
not reach it.

Python 3.12 is now set up as the first step, pip is upgraded, and requests
is installed with certifi>=2026.10.19, the release that drops the affected
emSign root (pip 26.2.2 vendors the same one). The existing python3 and
pip3 calls resolve to that interpreter, and because the setup comes first,
the rollback step finds it in place whichever later step fails. The
install step prints the pip and certifi versions it ended up with.
@upwind-code-us

upwind-code-us Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Upwind Upwind Code Scan - ⚠️ Warn

13 newly introduced vulnerabilities · 2 resolved · 43 total in this PR vs main

Total breakdown: 🔴 2 Critical | 🔶 13 High | 🟡 23 Medium | 🟢 5 Low


🔶 High · 5 findings
CVE Package Version Fix
CVE-2024-21539 @eslint/plugin-kit 0.2.0 0.2.3
CVE-2026-111755 follow-redirects 1.16.0 1.16.1
CVE-2026-111756 follow-redirects 1.16.0 1.16.1
CVE-2026-111181 body-parser 1.20.8 1.20.9
CVE-2026-112942 launch-editor 2.14.1 2.14.2

🟡 Medium · 4 findings
CVE Package Version Fix
CVE-2026-110180 fast-uri 3.1.8 3.1.9
CVE-2026-110306 fast-uri 3.1.8 3.1.9
CVE-2026-112944 launch-editor 2.14.1 2.14.2
CVE-2026-112943 launch-editor 2.14.1 2.14.2

🟢 Low · 4 findings
CVE Package Version Fix
CVE-2026-110725 fast-uri 3.1.8 3.1.9
CVE-2026-115897 serialize-javascript 4.0.0 7.1.3
CVE-2026-110095 fast-uri 3.1.8 3.1.9
CVE-2026-115897 serialize-javascript 6.0.2 7.1.3

✅ Resolved · 2 findings
CVE Package Version
CVE-2026-97058 sprintf-js 1.0.3
CVE-2026-93687 braces 3.0.3

View full analysis in Upwind Console

Scan completed in 15s

Scan history (1 scan)
Commit Scanned at New Resolved Net
5517d33 < 2026-10-26 06:29 UTC +13 -2 +11

Last scanned: 5517d33 · 2026-10-26 06:29 UTC

@netlify

netlify Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for sendbird-uikit-react ready!

Name Link
🔨 Latest commit 5517d33
🔍 Latest deploy log https://app.netlify.com/projects/sendbird-uikit-react/deploys/6adef34ed08c1e234a005114
😎 Deploy Preview https://deploy-preview-1478--sendbird-uikit-react.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@upwind-code-us

upwind-code-us Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Upwind Upwind IaC Scan - ✅ Passed

0 newly introduced misconfigurations · 0 resolved · 0 total in this PR vs main

View full analysis in Upwind Console →

Scan completed in 3s

Scan history (1 scan)
Commit Scanned at New Resolved Net
5517d33 < 2026-10-26 06:29 UTC 0 0 0

Last scanned: 5517d33 · 2026-10-26 06:29 UTC

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-26T06:31:17.735931Z 5517d33 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

sf-tyler-jeong added a commit that referenced this pull request Oct 26, 2026
Both setup-node steps asked for '24', which any 24.x in the runner's tool
cache satisfies; the last run of this workflow used the cached 24.21.0.
Node.js 24.22.1 updates the bundled root certificates to NSS 3.131.1 and
rejects chains through the eMudhra (emSign) intermediates whose keys were
reported compromised in October 2026. The E2E jobs install packages,
download the browser and call the Platform API through that Node.

Ask for '>=24.22.1 <25' in the shard and merge-report jobs, the same range
#1478 sets for the other workflows.
@sf-tyler-jeong
sf-tyler-jeong merged commit acea680 into main Oct 27, 2026
10 checks passed
@sf-tyler-jeong
sf-tyler-jeong deleted the chore/ci-runtime-ca-update branch October 27, 2026 02:57
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.

2 participants