Missing node in ubunbu FULL images

I did searched and I even used the ubuntu full images

I am getting this error with any images.

Run actions/checkout@v4

with:

persist-credentials: false

OCI runtime exec failed: exec failed: unable to start container process: exec: “node”: executable file not found in $PATH

Error: Process completed with exit code 127.

I registered the runner with this command.

./gitea-runner register --no-interactive --instance https://xxxxxxxxx.com --token e9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxmWc --name ubuntu-latest --labels ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:full-24.04

I made the container with this command.

docker run \
    -v /home/git/gitea/config.yaml:/config.yaml \
    -v /home/git/gitea/data:/data \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e CONFIG_FILE=/home/git/gitea/config.yaml \
    -e GITEA_INSTANCE_URL=https://xxxxxxxxxxxxxxxx.com \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=exxxxxxxxxxxxxxxxc \
    -e GITEA_RUNNER_NAME=ubuntu-latest \
    -e GITEA_RUNNER_LABELS=ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:full-24.04 \
    --name ubuntu-latest \
    -d gitea/act_runner:latest

in my config.yaml

I have this

labels:

  • “ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:full-24.04”

checkout is a JS action, so the *job* container needs `node` on PATH. installing node inside the act_runner container itself does not fix that.

a few things that bite people with your setup:

- make sure the label in `.runner` / `config.yaml` is really the one the workflow `runs-on` uses. register flags and a later config edit can drift

- try the official images instead of raw catthehacker tags, e.g. `ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest` (or the `-full` variant if you need the fat image)

- your `CONFIG_FILE=/home/git/gitea/config.yaml` looks off if you only mounted the file at `/config.yaml`. point `CONFIG_FILE` at the path that exists *inside* the runner container

quick check from the host:

`docker run --rm Package ubuntu · GitHub bash -lc ‘which node; echo $PATH’`

if node is only under `/opt/acttoolcache/…` and not on PATH for the runner’s exec, that matches the OCI “node not found” error. switching to the gitea runner-images labels usually clears it.

I changed to the gitea image one… still getting node not found…

here is git home dir

git@103:~/gitea$ ls -la
total 141412
drwxrwxr-x 5 git git 4096 Sep 10 18:56 .
drwxr-x--- 6 git git 4096 Sep 10 10:40 ..
-rw-rw-r-- 1 git git 507 Sep 10 18:57 .runner
-rw------- 1 git git 0 Sep 10 18:56 .runner.lock
-rw-rw-r-- 1 git git 17949 Sep 10 18:53 config.yaml
drwxrwxr-x 3 git git 4096 Sep 9 03:00 custom
drwxrwxr-x 17 git git 4096 Sep 10 18:55 data
-rw-rw-r-- 1 git git 506 Sep 10 18:11 docker.sh
-rwxrwxr-x 1 git git 126007248 Aug 29 12:41 gitea
-rwxrwxr-x 1 git git 18735264 Sep 9 14:36 gitea-runner
drwxrwxr-x 2 git git 4096 Sep 9 02:59 log
-rwxrwxr-x 1 git git 212 Sep 10 17:43 runner-register.sh
git@103:~/gitea$

script to create docker container

git@103:~/gitea$
git@103:~/gitea$
git@103:~/gitea$ cat docker.sh
docker run \
    -v /home/git/gitea/config.yaml:/config.yaml \
    -v /home/git/gitea/data:/data \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e CONFIG_FILE=/config.yaml \
    -e GITEA_INSTANCE_URL=https://xxxxxxxxxxxxxxxxxxxxx.com \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxWc \
    -e GITEA_RUNNER_NAME=ubuntu-latest \
    -e GITEA_RUNNER_LABELS=ubuntu-latest:docker://gitea/runner-images:ubuntu-latest \
    --name ubuntu-latest \
    -d gitea/act_runner:latest



git@103:~/gitea$

script to register runner
git@103:~/gitea$
git@103:~/gitea$ cat runner-register.sh
./gitea-runner register --no-interactive --instance https://xxxxxxxxxxxxcom --token exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxWc --name ubuntu-latest --labels ubuntu-latest:docker://gitea/runner-images:ubuntu-latest
git@103:~/gitea$
git@103:~/gitea$
git@103:~/gitea$

content of .runner

git@103:~/gitea$ cat .runner
{
"WARNING": "This file is automatically generated by Gitea Runner. Do not edit it manually unless you know what you are doing. Removing this file will cause Gitea Runner to re-register as a new runner.",
"id": 23,
"uuid": "59bb8dfaxxxxxxxxxxxxxxa2f422caa6",
"name": "ubuntu-latest",
"token": "2axxxxxxxxxxxxxxxxxxxx25",
"address": "``https://xxxxxxxxxxxxxxxxxxxx.com``",
"labels": [
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
],
"ephemeral": false
}
git@103:~/gitea$

I have different token in .runner for some reason



git@103:~/gitea$ docker image ls
i Info →   U  In Use
IMAGE                               ID             DISK USAGE   CONTENT SIZE   EXTRA
devkitpro/devkita64:latest          1fc388c3a0d3       2.79GB          705MB
gitea/act_runner:latest             b5c35d6bdbb9       68.6MB         19.8MB    U
gitea/runner-images:ubuntu-latest   fd911d7417bf       2.31GB          578MB
git@103:~/gitea$
git@103:~/gitea$
git@103:~/gitea$

git@103:~/gitea$
git@103:~/gitea$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
808c9dbc58c8 gitea/act_runner:latest "/sbin/tini -- run.sh" 40 minutes ago Up 40 minutes ubuntu-latest
git@103:~/gitea$
git@103:~/gitea$

I think I know why… I was trying to use different container in the action…

This action failed!!! with missing node…

name: Build Nro

on:
  push:
  pull_request:
  workflow_dispatch:
  workflow_call:

permissions: write-all

jobs:
  build:
    name: Test build
    runs-on: ubuntu-latest
    container:
      image: 'devkitpro/devkita64'
      ##image: 'ghcr.io/irneracoonovich/devkita64'

    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: build
        run: make -j2

      - name: test
        run: ls -la
        
      - name: Publish GitHub release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ github.run_number }}
          prerelease: false
          draft: false
          body: ${{ github.event.head_commit.message }}
          files: Clock-for-switch.nro
          name: "Switch Release #${{ github.run_number }}"

This action did worked!

name: Build Bin

on:
  push:
  pull_request:
  workflow_dispatch:
  workflow_call:

permissions: write-all

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false

      - name: build
        run: g++ main.cpp -o asciiclock

      - name: test
        run: ls -la
        
      - name: Publish GitHub release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ github.run_number }}
          prerelease: false
          draft: false
          body: ${{ github.event.head_commit.message }}
          files: asciiclock
          name: "Bin Release #${{ github.run_number }}"

my sitaution is create custom devkitpro docker image.

The situation above worked!