-
Notifications
You must be signed in to change notification settings - Fork 970
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
Composite Actions using Node 20 don't work with CentOS 7 #2906
Comments
This also affects
|
hey @ajschmidt8 ,
how did you effectively managed to downgrade your composite actions to a version that uses Node 16 so that the workflows continue to work? |
@TomasNovo you'll need to audit all of your workflows and look up Node v16 compatible versions ie:
would need to be rolled back to a specific version of
per https://github.com/FranzDiebold/github-env-vars-action/releases/tag/v2.7.0 |
I feel like this isn't getting the attention it needs: anyone using github actions to create manylinux2014 builds will no longer be able to build on that platform at all, if the proposed Node16->Node20 change becomes required. Is there any proposed mitigation of this? Am I incorrect in my assessment? |
Your assessment is correct. As a result, this change will have substantial negative impact on the Python community. #3128 sketches out a direction Github could take to resolve this, but there has been no response thus far. |
For those who are struggling here, I have a dirty way to make node 20 work with centos:7
NOTE: since we cannot cache that tar before node is set-up, this is abusing nodejs distribution, so you should make your own docker image that contains that tar (rather than download it every build) https://github.com/dixyes/ghactionsplay/blob/main/.github/workflows/glibc217node20.yml https://github.com/dixyes/ghactionsplay/actions/runs/9075609934/job/24936557854 |
We were able to keep using Node 16 with:
(from this article ) But that is likely to break very soon indeed. We need a longer term solution. |
@Y-- the |
We handled this notorious issue using the appropriate node16-compatible actions versions in centos7 containers (for instance, With a curious coincidence with the Centos7 EOL, everything WAS fine until some days ago, but now node20 is used anyway even if action.yml specifies FTR: self hosted runners Solved putting the suggested environment variable in the job: generate-RH7:
runs-on: [self-hosted, linux, docker]
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: 'true'
container:
image: ghcr.io/xxxxx/yyyy:5-centos7 |
FWIW, in lkrg-org/lkrg#344 we've just dealt with both CentOS 7 EOL and then this issue with: +++ b/.github/workflows/builds.yml
@@ -4,12 +4,17 @@ on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-22.04
+ env:
+ ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16
+ ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
strategy:
fail-fast: false
matrix:
include:
- image: centos:7
- run: yum install -y kernel-devel kernel gcc make elfutils-libelf-devel
+ run: |
+ sed -i 's,^mirrorlist=,#,; s,^#baseurl=http://mirror\.centos\.org/centos/$releasever,baseurl=https://vault.centos.org/7.9.2009,' /etc/yum.repos.d/CentOS-Base.repo
+ yum install -y kernel-devel kernel gcc make elfutils-libelf-devel
- image: almalinux:8
run: yum install -y kernel-devel kernel gcc make elfutils-libelf-devel
- image: rockylinux:8 This is with |
Hello! this workaround worked for me for GH runner version 2.317 and 2.318 on a C7, but for 2.319 this is not working anymore and I am getting the issue
Is there another way to make the latest GH runner version work on C7 + node20? |
... the Haskell image of it does not support running node20: /__e/node20/bin/node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /__e/node20/bin/node) /__e/node20/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /__e/node20/bin/node) /__e/node20/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /__e/node20/bin/node) I could try the following on GitHub actions: env: ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true as noted here: actions/runner#2906 However, it seems support for this was removed this spring anyway: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/ ... or will be soon. So I might as well stop running CI on older GHCs already...
+1 to fixing this issue I think using a statically linked node that just works for the built-in actions would be the way to go - as demonstrated here: #3128 Lots of people have hit this already: |
* fix(workflow): upgrade upload-artifact to v4 * fix(workflow): make action works by actions/runner#2906 (comment)
Problem
As mentioned in the GitHub blog post below, Actions is currently transitioning from Node 16 to Node 20.
However, Node 20 seems to be incompatible with CentOS 7, which is listed as a compatible OS for self-hosted runners below:
This incompatibility seems to stem from the fact that NodeJS version 20 supports
glibc >=2.28
(as seen in the link below), but CentOS 7 only hasglibc==2.17
.The consequence of this is that composite actions that have been updated to use Node 20 no longer work with CentOS 7 host machines or containers.
Here is an example of the error message that results from trying to run a composite action using Node 20 on a CentOS 7 container:
As a result of this incompatibility, we've had to intentionally downgrade our composite actions to a version that uses Node 16 so that our workflows continue to work.
To Reproduce
Run the following workflow to exhibit the error message
Expected behavior
Since the documentation below states that self-hosted runners support CentOS 7, I would expect the above workflow to run to completion without any errors
Runner Version and Platform
Ubuntu 22.04, runner version
2.309.0
The text was updated successfully, but these errors were encountered: