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

checkout@v3 using node20 instead of node16 #1809

Open
jcooke-impinj opened this issue Jul 3, 2024 · 38 comments
Open

checkout@v3 using node20 instead of node16 #1809

jcooke-impinj opened this issue Jul 3, 2024 · 38 comments

Comments

@jcooke-impinj
Copy link

Running on rhel7 with self-hosted runners and starting today we're running into issues where @V3 is using node20 instead of node16.
Happening on runner versions 2.316.1 and 2.317.0.
Oddly some of our Repos don't run into this issue when executing checkout@v3 on the same runners.

Run actions/checkout@v3
/ci_storage_agent_1/actions-runner/externals/node20/bin/node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by /ci_storage_agent_1/actions-runner/externals/node20/bin/node) /ci_storage_agent_1/actions-runner/externals/node20/bin/node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by /ci_storage_agent_1/actions-runner/externals/node20/bin/node)
/ci_storage_agent_1/actions-runner/externals/node20/bin/node: /lib64/libstdc++.so.6: version CXXABI_1.3.9' not found (required by /ci_storage_agent_1/actions-runner/externals/node20/bin/node) /ci_storage_agent_1/actions-runner/externals/node20/bin/node: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21' not found (required by /ci_storage_agent_1/actions-runner/externals/node20/bin/node)
/ci_storage_agent_1/actions-runner/externals/node20/bin/node: /lib64/libc.so.6: version GLIBC_2.28' not found (required by /ci_storage_agent_1/actions-runner/externals/node20/bin/node) /ci_storage_agent_1/actions-runner/externals/node20/bin/node: /lib64/libc.so.6: version GLIBC_2.25' not found (required by /ci_storage_agent_1/actions-runner/externals/node20/bin/node)

@jcooke-impinj
Copy link
Author

Our team found that setting these before starting the runners get's things going again. Still unsure what's causing this.

export ACTIONS_RUNNER_FORCED_INTERNAL_NODE_VERSION=node16
export ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION=node16

@adpaco-aws
Copy link

This doesn't seem to be specific to actions/checkout@v3 since we tried to upgrade to actions/checkout@v4 (here) and got the same failure (here).

@biswalc
Copy link

biswalc commented Jul 4, 2024

I am having the same issue while running below versions, on ubuntu 20.04 VM:

actions/checkout@v3.6.0
actions/checkout@v3
actions/checkout@v4
actions/checkout@v4.1.7

Error:

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

Issue started today, i.e. 3 Jul 10am PDT.

@junghyun-apr
Copy link

Hello! Our development team is also experiencing the same issue. We are using AWS instances as self-hosted.
We temporarily resolved the issue by simply changing the node16 directory to node20 in the same path. 🥲

AWS AMI :

amzn2-ami-kernel-5.10-hvm-2.0.20240223.0-x86_64-gp2

Git Action Error :

/home/ec2-user/actions-runner/externals/node20/bin/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /home/ec2-user/actions-runner/externals/node20/bin/node)
/home/ec2-user/actions-runner/externals/node20/bin/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /home/ec2-user/actions-runner/externals/node20/bin/node)

@GuyAv46
Copy link

GuyAv46 commented Jul 4, 2024

Following this blog post: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
Adding this to the envs that require node16 fixed the issue

ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true

@Flamefire
Copy link

Flamefire commented Jul 4, 2024

Our team found that setting these before starting the runners get's things going again. Still unsure what's causing this.

export ACTIONS_RUNNER_FORCED_INTERNAL_NODE_VERSION=node16
export ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION=node16

I tried setting this inside a workflow running on GH hosted runners and it didn't work.
So it looks like this only works when the runner itself was started with those set, i.e. you cannot set them for a running runner which includes the GH hosted ones.

This doesn't seem to be specific to actions/checkout@v3 since we tried to upgrade to actions/checkout@v4 (here) and got the same failure (here).

v4 always used Node 20

I am having the same issue while running below versions, on ubuntu 20.04 VM:

actions/checkout@v3.6.0
actions/checkout@v3
actions/checkout@v4
actions/checkout@v4.1.7

See above

@david-batranu
Copy link

Fixed by renaming the node20 folder and symlinking node16 to node20:

cd $RUNNER_HOME/actions-runner/externals
mv node20 node20.bak
ln -s node16 node20

@eshogo
Copy link

eshogo commented Jul 4, 2024

I tried modifying /home/runner/actions-runner/.env and env.sh and it works fine.

% cat .env
ACTIONS_RUNNER_FORCED_INTERNAL_NODE_VERSION=node16
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION=node16

and adding their environment variables into 'varCheckList' array in env.sh.
(not needed?)

varCheckList=(
    'LANG'
    'JAVA_HOME'
    'ANT_HOME'
    'M2_HOME'
    'ANDROID_HOME'
    'ANDROID_SDK_ROOT'
    'GRADLE_HOME'
    'NVM_BIN'
    'NVM_PATH'
    'LD_LIBRARY_PATH'
    'PERL5LIB'
    'ACTIONS_RUNNER_FORCED_INTERNAL_NODE_VERSION'
    'ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION'
    )

Then restart runner service

% systemctl restart github-actions-runner.service

@david-batranu
Copy link

@n1ngu
Copy link

n1ngu commented Jul 4, 2024

Following this blog post: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/ Adding this to the envs that require node16 fixed the issue

ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true

Quoting the post paragraph about that workaround: "This will only work until we upgrade the runner removing Node16 later in the spring"

We are walking a tightrope.

Just wanted to raise some awareness about that. Plan to actually upgrade your github actions in the short term or move away from them. E.g. I think I'll quit my job. 😄

@biswalc
Copy link

biswalc commented Jul 4, 2024

I am having the same issue while running below versions, on ubuntu 20.04 VM:

actions/checkout@v3.6.0
actions/checkout@v3
actions/checkout@v4
actions/checkout@v4.1.7

Error:

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

Issue started today, i.e. 3 Jul 10am PDT.

My glibc version:

ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.16) 2.31
Copyright (C) 2020 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.

So why do I get this error? I am using checkout@v4.1.7. I do not understand what I have to do to upgrade.

@ayizhi
Copy link

ayizhi commented Jul 5, 2024

Here's a critical issue: Firstly, you shouldn't upgrade such fundamental environments arbitrarily. Even if you do upgrade, you must ensure the environment is correct. Upgrading to Node 20 and causing a glib error is absolutely unacceptable, especially in a product from a company like Microsoft.

@FelixSchwarz
Copy link

FelixSchwarz commented Jul 5, 2024

I wish there was an alternative version of the checkout action, maybe written in rust so we could just deploy a static binary. Then we would just compile that against a really old version of glibc. This would also simplify running GitHub Actions with nektos/act which does not map node into the container.

Update: I found checkout-action in GitHub's market place and added support for private repos. Not sure if that is a permanent solution but at least our CI jobs are passing again...

@hasufell
Copy link

hasufell commented Jul 5, 2024

This means you now can't run any docker image that has a glibc older than 2.27. That includes:

  • debian:9
  • fedora:27
  • ubuntu:18.04

What a huge f*ckup. I'm baffled by the amount of incompetence. What's wrong with providing a statically linked node binary? Do you need help with redistribution github?

hasufell added a commit to stable-haskell/haskell-language-server that referenced this issue Jul 5, 2024
hasufell added a commit to haskell/ghcup-metadata that referenced this issue Jul 5, 2024
@matthinea
Copy link

@Kobzol thank you for that link, your setup is the only thing that worked for me.

@daiyam
Copy link

daiyam commented Jul 10, 2024

in my workflow: https://github.com/mmomtchev/hadron/blob/main/.github/workflows/os_comp.yml#L32-L33

It's working fine (only ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION needed)

0x400080 added a commit to duckduckgo/duckduckgo-locales that referenced this issue Jul 10, 2024
Adds an option to deal with the current glibc errors when running the tests.  Issue was reported actions/checkout#1809 and solution comes from actions/checkout#1809 (comment)
0x400080 added a commit to duckduckgo/duckduckgo-locales that referenced this issue Jul 10, 2024
Now adding it to the correct place. (issue actions/checkout#1809)
0x400080 added a commit to duckduckgo/duckduckgo-locales that referenced this issue Jul 10, 2024
Adds an option to deal with the current glibc errors when running the tests.  Issue was reported actions/checkout#1809 and solution comes from actions/checkout#1809 (comment)
denis-maiorov-brightsec added a commit to NeuraLegion/bright-cli that referenced this issue Jul 10, 2024
Bypasses unsupported node versions check
Node 16 is required to build linux binaries compatible with old distros (see #449)

relates-to: actions/checkout#1809
denis-maiorov-brightsec added a commit to NeuraLegion/bright-cli that referenced this issue Jul 10, 2024
Bypasses unsupported node versions check
Node 16 is required to build linux binaries compatible with old distros
(see #449)

relates-to: actions/checkout#1809
mauryaavinash95 pushed a commit to DataStates/DeepSpeed that referenced this issue Jul 10, 2024
…rosoft#5756)

With changes from GitHub [finally
deprecating](actions/checkout#1474) [node16
based
runners](https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/)
(which the checkout@v3 action uses) we need to make changes to support
this.

To do this, there are two changes. First we remove the python 3.6 check
as with the changes in pydantic v2 that will be merged soon, we will be
removing this check there, so we can more easily remove it now so that
future PRs are cleaner and it is clear why some changes have been made.

Second, node16 is the default on some of our self-hosted runners. To
work around tests failing on these, we [set the GitHub env var to
override this
check](https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/).

Other relevant links:
actions/checkout#1474
https://github.com/easybuilders/easybuild-framework/pull/4574/files
actions/checkout#1809
actions/runner#3373
actions/checkout#1809
chchwy added a commit to chchwy/pencil2d that referenced this issue Jul 11, 2024
chchwy added a commit to chchwy/pencil2d that referenced this issue Jul 11, 2024
@friedrichroell
Copy link

has anyone tried to run the runner inside a docker container (which is easier to run node20 with)?

GioSensation pushed a commit to duckduckgo/duckduckgo-locales that referenced this issue Jul 11, 2024
Adds an option to deal with the current glibc errors when running the tests.  Issue was reported actions/checkout#1809 and solution comes from actions/checkout#1809 (comment)
@Kobzol
Copy link

Kobzol commented Jul 11, 2024

I'm (and I suspect others are) running the checkout action inside a Docker container that is specifically using an old glibc version. The problem is not how to use Node 20, but rather how not to use it.

@friedrichroell
Copy link

its the other way around for me, i have an old system that i cant update, but my actions are running directly on the host. could you point me to a guide or something for running the actions on a docker container? 🙏
Cheers!

@Kobzol
Copy link

Kobzol commented Jul 11, 2024

@friedrichroell
Copy link

i meant running the self hosted runner itself in a container

chchwy added a commit to pencil2d/pencil that referenced this issue Jul 11, 2024
acelyc111 added a commit to apache/incubator-pegasus that referenced this issue Jul 12, 2024
The glibc version on ubuntu1804 and centos7 is lower than the node20 required, so
we need to force the node version to 16 when running CI.

See more details: actions/checkout#1809
tobni pushed a commit to pantsbuild/pants that referenced this issue Jul 15, 2024
We started to run into issues with node16 no longer being functional on
the runner, with symptoms like
actions/checkout#1809
@sawwn23
Copy link

sawwn23 commented Jul 16, 2024

Fixed by renaming the node20 folder and symlinking node16 to node20:

cd $RUNNER_HOME/actions-runner/externals
mv node20 node20.bak
ln -s node16 node20

Thanks for your workaround solution

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