Skip to content

tools: add non-default OpenSSL versions to the test-shared workflow#62862

Open
panva wants to merge 8 commits intonodejs:mainfrom
panva:additional-openssl-in-shared
Open

tools: add non-default OpenSSL versions to the test-shared workflow#62862
panva wants to merge 8 commits intonodejs:mainfrom
panva:additional-openssl-in-shared

Conversation

@panva
Copy link
Copy Markdown
Member

@panva panva commented Apr 21, 2026

Adds an additional OpenSSL shared-libraries matrix to test-shared.yml so PRs run against the supported OpenSSL releases we don't already build against by default. No more waiting for a full CI to find out a crypto/TLS change is broken on another version 🙏.

  • collect-openssl-versions dynamically builds the matrix from the pinned nixpkgs and https://endoflife.date, dropping EOL versions and the version the existing build job already covers while keeping ones that have extended support - 1.1.1 and soon 3.0.
  • Releases newer than the job-level SUPPORTED_OPENSSL_VERSION env run with continue-on-error: true so that OpenSSL versions we haven't adjusted for yet don't fail GHA.

First commit for simple review, second is refactoring to a composite action, rest is fixes/applying feedback/minor refactors.

Signed-off-by: Filip Skokan <panva.ip@gmail.com>
@panva panva requested a review from aduh95 April 21, 2026 08:27
@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/actions

@nodejs-github-bot nodejs-github-bot added meta Issues and PRs related to the general management of the project. tools Issues and PRs related to the tools directory. labels Apr 21, 2026
@panva panva added commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. dont-land-on-v20.x PRs that should not land on the v20.x-staging branch and should not be released in v20.x. dont-land-on-v22.x PRs that should not land on the v22.x-staging branch and should not be released in v22.x. dont-land-on-v24.x PRs that should not land on the v24.x-staging branch and should not be released in v24.x. dont-land-on-v25.x PRs that should not land on the v25.x-staging branch and should not be released in v25.x. labels Apr 21, 2026
@panva panva marked this pull request as ready for review April 21, 2026 11:32
@aduh95
Copy link
Copy Markdown
Contributor

aduh95 commented Apr 21, 2026

Adding extra GHA workflows comes at the expense of spending more minutes to prepare security releases. We can skip the test-shared workflow on the private repo, but idk if it's worth it given that there are some path that we only run on that workflow.
That being said, there's certainly some value to run more variants on GHA, maybe we need to gate them behind github.repository == 'nodejs/node'

Comment on lines +46 to +53
# 3. Fetch OpenSSL release versions from endoflife.date, keep entries that
# are either not past EOL or still under extended support, then pick the
# first nix attr whose `.version` starts with the release version
# followed by `.` / letter / end-of-string (so "3.6" matches "3.6.1",
# "1.1.1" matches "1.1.1w", and "1.1" does NOT swallow "1.1.1").
# Releases without a matching nix attr and the one covered by default in
# `build` are dropped.
curl -sf https://endoflife.date/api/openssl.json \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't it be better to have a manually curated list (by manually, I mean: the bot would open PRs to update the list every Sunday)? The logic is quite hard to grasp, and it's a lot of repetitive work that does not scale well if we wanted to add e.g. non-OpenSSL variants.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uff, there's an idea, nixpgs actually has BoringSSL too. I'd do this in a follow-up.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And it'd have to be the same job that does nixpkgs-unstable updates, else we'd run the risk of the two being open at the same time and not being in sync between their merges.

--arg ccache "${NIX_SCCACHE:-null}" \
--arg devTools '[]' \
--arg benchmarkTools '[]' \
${{ endsWith(inputs.system, '-darwin') && '--arg withAmaro false --arg withLief false --arg withSQLite false --arg withFFI false --arg extraConfigFlags ''["--without-inspector" "--without-node-options"]'' \' || '\' }}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this would need to be moved to inputs.extra-nix-args

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I figured only extras (not shared between all uses of the composite action) would go through those inputs.

@panva
Copy link
Copy Markdown
Member Author

panva commented Apr 21, 2026

but idk if it's worth it given that there are some path that we only run on that workflow

The OpenSSL versions are a big gap. Since we don't/can't keep up with the versions in CI.

Comment thread .github/workflows/test-shared.yml Outdated
Comment on lines +201 to +204
build-openssl:
needs:
- build-tarball
- collect-openssl-versions
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might want to wait for the build job to finish, otherwise we'd have to run 5 times the same V8 version

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok.

Copy link
Copy Markdown
Member Author

@panva panva Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

though it increases the total time waiting for the workflow since we even have to wait for the slow build ones. wdyt?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. dont-land-on-v20.x PRs that should not land on the v20.x-staging branch and should not be released in v20.x. dont-land-on-v22.x PRs that should not land on the v22.x-staging branch and should not be released in v22.x. dont-land-on-v24.x PRs that should not land on the v24.x-staging branch and should not be released in v24.x. dont-land-on-v25.x PRs that should not land on the v25.x-staging branch and should not be released in v25.x. meta Issues and PRs related to the general management of the project. tools Issues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants