runner icon indicating copy to clipboard operation
runner copied to clipboard

Github Actions Self-Hosted Runner issue with node 20

Open biswalc opened this issue 1 year ago • 4 comments

Describe the bug

I am running Github Actions Self Hosted Runner on a Ubuntu VM:

~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"

I am running Actions Runner version 2.317.0

In the context of the notice by the Github team: Notice

I am using the GitHub Actions:

jobs:
  my-job:
      runs-on: [my-ubuntu]
      timeout-minutes: 120
      container:
        image: my-image-path:latest
        credentials:
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}

      steps:
        - name: Checkout Source Code
          uses: actions/[email protected]

But when the job executes, I get this Error in the Job logs:

/usr/bin/docker exec  XXXX sh -c "cat /etc/*release | grep ^ID"
/__e/node20/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /__e/node20/bin/node)

On the Ubuntu VM, I have node installed already, and it is running as expected; not sure why the runner is complaining about not being able to run node 20

# Self-Hosted Runner Ubuntu 20.04
$ node -v
v20.15.0

Additional info:

$ 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.

Currently to circumvent the downtime of CI, I am running the scripts as below:

bash -c 'ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true run.sh' > nohup.out 2>&1 &

## and github actions
      steps:
        - name: Checkout Source Code
          uses: actions/checkout@v3

To Reproduce Provided in the description.

Expected behavior Since node version v20.15.0 is already running on the ubuntu VM, the runner should not have issues with running with node20

Runner Version and Platform

Github runner version 2.317.0

~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"

OS of the machine running the runner?

NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"

What's not working?

Provided in description.

Job Log Output

Run actions/[email protected]
/usr/bin/docker exec  7ac705625cb4517179f0c29eb36101b7221b70f40f0d76ede8fcbdad305a8012 sh -c "cat /etc/*release | grep ^ID"
/__e/node[20](https://github.com/Roche-DIA-RDS-CSI/bio-nlp-py/actions/runs/9799219159/job/27061796743#step:3:21)/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /__e/node20/bin/node)

Runner and Worker's Diagnostic Logs

None

biswalc avatar Jul 04 '24 22:07 biswalc

Same issue here with self-hosted runner. I am still running checkout@v2 and still its failing for node20.

is it something to do with https://github.com/actions/runner/releases/tag/v2.317.0?

hardikns avatar Jul 05 '24 10:07 hardikns

Dropping support for official ubuntu:18.04 docker image is unfortunate and https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/ only lists ubuntu:16.04 as unsupported

Are there plans to fix the ubuntu:18.04 support?

Bercon avatar Jul 05 '24 13:07 Bercon

Since node-based actions spread into containers, it seems very unwise to allow the node interpreter to rely on software inside the container. That appears to be the root of this mismatch. A container may contain older glibc which breaks things as basic as actions/checkout, which can leave users pretty trapped.

Node should instead be:

  • built statically, so it doesn't care about the libc inside the container.
  • Alternatively, make sure to build it in a special build environment specifically for node, which uses a very old glibc version so that it is compatible with a wide range of glibc versions, and document the minimum glibc requirement for using container:

eli-schwartz avatar Jul 05 '24 19:07 eli-schwartz

It appears this has actually been proposed in https://github.com/actions/runner/pull/3128 back in February.

eli-schwartz avatar Jul 22 '24 18:07 eli-schwartz

Setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION has stopped working for me. I am still on checkout@v2

TheDistroHopper avatar Nov 27 '24 12:11 TheDistroHopper

Setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION has stopped working for me. I am still on checkout@v2

The latest release has removed node16 support - https://github.com/actions/runner/pull/3503

TheDistroHopper avatar Nov 27 '24 12:11 TheDistroHopper