Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build steps that use ziti-runner cannot run node 20 #26

Open
scareything opened this issue Nov 13, 2023 · 4 comments
Open

build steps that use ziti-runner cannot run node 20 #26

scareything opened this issue Nov 13, 2023 · 4 comments
Assignees

Comments

@scareything
Copy link
Member

builds in ziti-tunnel-sdk-c and ziti-sdk-c recently started failing when running the lukka/get-cmake and lukka/run-cmake actions:

/__e/node20/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /__e/node20/bin/node)

It turns out that the actions were recently updated to use node 20, since node 16 is being deprecated by GH). I think our options are to either find/create a build of node20 that runs on bionic, or inform downstream projects to pin run-cmake to "v10.6" and get-cmake to "v3.27.7"

@qrkourier
Copy link
Member

That's a pickle. If they pin those Actions to a version that uses NodeJS 16, they'll eventually stop working when GitHub decommissions it. That sounds like the only immediate workaround.

I'll have to research how the NodeJS runtime installed. Actions' action.yml has a directive like using: 'node20', so it appears to be sourced from the runner, possibly via a bind mount when a runner container is involved.

@qrkourier qrkourier self-assigned this Nov 13, 2023
@scareything
Copy link
Member Author

https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.gz seems to work in a clean bionic container:

root@5dd9d753a008:/host# ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1.6) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

root@5dd9d753a008:/host# curl -sLO https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.gz 
root@5dd9d753a008:/host# tar -xzf ./node-v20.9.0-linux-x64-glibc-217.tar.gz 
root@5dd9d753a008:/host# ./node-v20.9.0-linux-x64-glibc-217/bin/node --version
v20.9.0

@qrkourier
Copy link
Member

Will the Actions that declare a particular NodeJS runtime version use the version available inside the builder container image unconditionally, or only if the NodeJS version matches their declared version?

If the Actions preferentially use the versions of NodeJS installed in the builder image, then we can supply a range of NodeJS versions there, and the Actions can choose, if there's a well-known filesystem path where they expect to find versions. I suppose it can't be the same filesystem path used by the GH runner because those are presumably being mounted as a bind volume on the runner container. I'm uncertain about how that works.

@qrkourier
Copy link
Member

The easiest solution would be to abandon bionic and build on focal. I'm willing to keep this open until one of the two triggers occur.

  • We become willing to require GLIBC >= 2.31 (Focal's libc version) to utilize the builds that use this container image directly (ZET builds are immune and have their own build images invoked by commands run in this image).
  • Or, GitHub decommissions NodeJS v16 and we're forced to adapt to NodeJS v20 on Bionic to continue using GLIBC 2.27.

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

No branches or pull requests

2 participants