OCI runtime exec failed - Unable to start container process

Thanks for your comment lunny.

I found gitea promising for my CICD needs, but I have exact same error in first project.

The error I get doesn’t make sense in my view - missing node in $PATH:
runner1 | [Continuous Deployment/Build] | OCI runtime exec failed: exec failed: unable to start container process: exec: “node”: executable file not found in $PATH: unknown

I’m saying it doesn’t make sense, because I’m running Gitea runner in docker with exact same docker-compose.yaml as documented on Gitea.

Docker container images are built with all dependencies, and we never install dependencies on the host when running docker images.

Now, when I add node:lts as “container”, funnily, it successfully downloads the node:lts image, yet - doesn’t find node. There is no further log as to “who” is searching for node and in “which” container. I’m assuming this is runner1 in my case, using docker image gitea/act_runner:nightly. Using gitea/act_runner:latest doesn’t make a difference.

Also, second observation is, it does seem to checkout in “Set up job” step, but fail in “Check out repository code” step.

If I remove “Check out repository code” step and just put:
- run: ls -ltr /
It shows different error: “bash: /var/run/act/workflow/0: No such file or directory”

Are there any undocumented environment variables aside from those in Quickstart docker-based gitea self hosted server and runners?

Full log below, would you suggest anything further?

runner1  | time="2024-07-31T00:10:40Z" level=info msg="log level changed to debug" func="[initLogging]" file="[daemon.go:173]"
runner1  | time="2024-07-31T00:10:40Z" level=info msg="Starting runner daemon" func="[func6]" file="[daemon.go:39]"
runner1  | time="2024-07-31T00:10:40Z" level=debug msg="gc: 2024-07-31 00:10:40.018551277 +0000 UTC m=+0.035750304" func="[gcCache]" file="[handler.go:432]" module=artifactcache
runner1  | time="2024-07-31T00:10:40Z" level=info msg="runner: runner1, with version: v0.2.10+4-g2f78411, with labels: [ubuntu-latest ubuntu-22.04 ubuntu-20.04], declare successfully" func="[func6]" file="[daemon.go:119]"
runner1  | time="2024-07-31T00:10:44Z" level=info msg="task 19 repo is user/react-app-demo https://github.com http://git.localdomain" func="[run]" file="[runner.go:139]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Plan Stages: [0xc000011080]" func="[NewPlanExecutor]" file="[runner.go:135]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Stages Runs: [Build]" func="[func1]" file="[runner.go:142]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Name: Build" func="[func1]" file="[runner.go:145]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.RawNeeds: {2 0    <nil> []    0 0}" func="[func1]" file="[runner.go:146]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.RawRunsOn: {8 0 !!str ubuntu-latest  <nil> []    9 18}" func="[func1]" file="[runner.go:147]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Env: {0 0    <nil> []    0 0}" func="[func1]" file="[runner.go:148]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.If: {0 0  success()  <nil> []    0 0}" func="[func1]" file="[runner.go:149]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Steps: Check out repository code" func="[func1]" file="[runner.go:152]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Steps: npm i" func="[func1]" file="[runner.go:152]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.TimeoutMinutes: " func="[func1]" file="[runner.go:155]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Services: map[]" func="[func1]" file="[runner.go:156]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Strategy: <nil>" func="[func1]" file="[runner.go:157]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.RawContainer: {4 0 !!map   <nil> [0xc0004b4c80 0xc0004b4d20]    15 13}" func="[func1]" file="[runner.go:158]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Defaults.Run.Shell: " func="[func1]" file="[runner.go:159]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Defaults.Run.WorkingDirectory: " func="[func1]" file="[runner.go:160]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Outputs: map[]" func="[func1]" file="[runner.go:161]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Uses: " func="[func1]" file="[runner.go:162]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.With: map[]" func="[func1]" file="[runner.go:163]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job.Result: " func="[func1]" file="[runner.go:165]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Empty Strategy, matrixes=[map[]]" func="[GetMatrixes]" file="[workflow.go:486]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Job Matrices: [map[]]" func="[func1]" file="[runner.go:184]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Runner Matrices: map[]" func="[func1]" file="[runner.go:185]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Final matrix after applying user inclusions '[map[]]'" func="[func1]" file="[runner.go:188]"
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Detected CPUs: 4" func="[func1]" file="[runner.go:226]"
runner1  | [Continuous Deployment/Build] [DEBUG] evaluating expression 'success()'
runner1  | [Continuous Deployment/Build] [DEBUG] expression 'success()' evaluated to 'true'
runner1  | [Continuous Deployment/Build] 🚀  Start image=node:lts
runner1  | [Continuous Deployment/Build]   🐳  docker pull image=node:lts platform= username= forcePull=true
runner1  | [Continuous Deployment/Build] [DEBUG]   🐳  docker pull node:lts
runner1  | time="2024-07-31T00:10:44Z" level=debug msg="Parallel tasks (0) below minimum, setting to 1" func="[func1]" file="[executor.go:100]"
runner1  | [Continuous Deployment/Build] [DEBUG] pulling image 'docker.io/library/node:lts' ()
runner1  | [Continuous Deployment/Build] [DEBUG] Pulling from library/node :: lts
runner1  | [Continuous Deployment/Build] [DEBUG] Digest: sha256:1ae9ba874435551280e95c8a8e74adf8a48d72b564bf9dfe4718231f2144c88f :: 
runner1  | [Continuous Deployment/Build] [DEBUG] Status: Image is up to date for node:lts :: 
runner1  | [Continuous Deployment/Build] Cleaning up network for job Build, and network name is: GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-Build-network
runner1  | time="2024-07-31T00:10:47Z" level=debug msg="Parallel tasks (0) below minimum, setting to 1" func="[func2]" file="[executor.go:100]"
runner1  | [Continuous Deployment/Build]   🐳  docker create image=node:lts platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-Build-network"
runner1  | [Continuous Deployment/Build] [DEBUG] Custom container.Config from options ==> &{Hostname: Domainname: User: AttachStdin:false AttachStdout:true AttachStderr:true ExposedPorts:map[] Tty:false OpenStdin:false StdinOnce:false Env:[] Cmd:[] Healthcheck:<nil> ArgsEscaped:false Image: Volumes:map[] WorkingDir: Entrypoint:[] NetworkDisabled:false MacAddress: OnBuild:[] Labels:map[] StopSignal: StopTimeout:<nil> Shell:[]}
runner1  | [Continuous Deployment/Build] [DEBUG] Merged container.Config ==> &{Hostname: Domainname: User: AttachStdin:false AttachStdout:true AttachStderr:true ExposedPorts:map[] Tty:false OpenStdin:false StdinOnce:false Env:[RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8] Cmd:[] Healthcheck:<nil> ArgsEscaped:false Image:node:lts Volumes:map[] WorkingDir:/workspace/user/react-app-demo Entrypoint:[/bin/sleep 10800] NetworkDisabled:false MacAddress: OnBuild:[] Labels:map[] StopSignal: StopTimeout:<nil> Shell:[]}
runner1  | [Continuous Deployment/Build] [DEBUG] Custom container.HostConfig from options ==> &{Binds:[] ContainerIDFile: LogConfig:{Type: Config:map[]} NetworkMode:GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-Build-network PortBindings:map[] RestartPolicy:{Name:no MaximumRetryCount:0} AutoRemove:false VolumeDriver: VolumesFrom:[] ConsoleSize:[0 0] Annotations:map[] CapAdd:[] CapDrop:[] CgroupnsMode: DNS:[] DNSOptions:[] DNSSearch:[] ExtraHosts:[] GroupAdd:[] IpcMode: Cgroup: Links:[] OomScoreAdj:0 PidMode: Privileged:false PublishAllPorts:false ReadonlyRootfs:false SecurityOpt:[] StorageOpt:map[] Tmpfs:map[] UTSMode: UsernsMode: ShmSize:0 Sysctls:map[] Runtime: Isolation: Resources:{CPUShares:0 Memory:0 NanoCPUs:0 CgroupParent: BlkioWeight:0 BlkioWeightDevice:[] BlkioDeviceReadBps:[] BlkioDeviceWriteBps:[] BlkioDeviceReadIOps:[] BlkioDeviceWriteIOps:[] CPUPeriod:0 CPUQuota:0 CPURealtimePeriod:0 CPURealtimeRuntime:0 CpusetCpus: CpusetMems: Devices:[] DeviceCgroupRules:[] DeviceRequests:[] KernelMemory:0 KernelMemoryTCP:0 MemoryReservation:0 MemorySwap:0 MemorySwappiness:0xc0000faec0 OomKillDisable:0xc0000fadbb PidsLimit:0xc0000faf20 Ulimits:[] CPUCount:0 CPUPercent:0 IOMaximumIOps:0 IOMaximumBandwidth:0} Mounts:[] MaskedPaths:[] ReadonlyPaths:[] Init:<nil>}
runner1  | [Continuous Deployment/Build] --network and --net in the options will be ignored.
runner1  | [Continuous Deployment/Build] [DEBUG] Merged container.HostConfig ==> &{Binds:[/var/run/docker.sock:/var/run/docker.sock] ContainerIDFile: LogConfig:{Type: Config:map[]} NetworkMode:GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-Build-network PortBindings:map[] RestartPolicy:{Name:no MaximumRetryCount:0} AutoRemove:true VolumeDriver: VolumesFrom:[] ConsoleSize:[0 0] Annotations:map[] CapAdd:[] CapDrop:[] CgroupnsMode: DNS:[] DNSOptions:[] DNSSearch:[] ExtraHosts:[] GroupAdd:[] IpcMode: Cgroup: Links:[] OomScoreAdj:0 PidMode: Privileged:false PublishAllPorts:false ReadonlyRootfs:false SecurityOpt:[] StorageOpt:map[] Tmpfs:map[] UTSMode: UsernsMode: ShmSize:0 Sysctls:map[] Runtime: Isolation: Resources:{CPUShares:0 Memory:0 NanoCPUs:0 CgroupParent: BlkioWeight:0 BlkioWeightDevice:[] BlkioDeviceReadBps:[] BlkioDeviceWriteBps:[] BlkioDeviceReadIOps:[] BlkioDeviceWriteIOps:[] CPUPeriod:0 CPUQuota:0 CPURealtimePeriod:0 CPURealtimeRuntime:0 CpusetCpus: CpusetMems: Devices:[] DeviceCgroupRules:[] DeviceRequests:[] KernelMemory:0 KernelMemoryTCP:0 MemoryReservation:0 MemorySwap:0 MemorySwappiness:0xc0000faec0 OomKillDisable:0xc0000fadbb PidsLimit:0xc0000faf20 Ulimits:[] CPUCount:0 CPUPercent:0 IOMaximumIOps:0 IOMaximumBandwidth:0} Mounts:[{Type:volume Source:act-toolcache Target:/opt/hostedtoolcache ReadOnly:false Consistency: BindOptions:<nil> VolumeOptions:<nil> TmpfsOptions:<nil> ClusterOptions:<nil>} {Type:volume Source:GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-env Target:/var/run/act ReadOnly:false Consistency: BindOptions:<nil> VolumeOptions:<nil> TmpfsOptions:<nil> ClusterOptions:<nil>} {Type:volume Source:GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build Target:/workspace/user/react-app-demo ReadOnly:false Consistency: BindOptions:<nil> VolumeOptions:<nil> TmpfsOptions:<nil> ClusterOptions:<nil>}] MaskedPaths:[] ReadonlyPaths:[] Init:<nil>}
runner1  | [Continuous Deployment/Build] [DEBUG] Created container name=GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build id=a9df613340b8ad7e33b75a6fe123f21ee15e0f5ee6e67c9716f8f552e3c6ab17 from image node:lts (platform: )
runner1  | [Continuous Deployment/Build] [DEBUG] ENV ==> [RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8]
runner1  | [Continuous Deployment/Build]   🐳  docker run image=node:lts platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-Build-network"
runner1  | [Continuous Deployment/Build] [DEBUG] Starting container: a9df613340b8ad7e33b75a6fe123f21ee15e0f5ee6e67c9716f8f552e3c6ab17
runner1  | [Continuous Deployment/Build] [DEBUG] Started container: a9df613340b8ad7e33b75a6fe123f21ee15e0f5ee6e67c9716f8f552e3c6ab17
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/event.json len:4726
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/envs.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Extracting content to '/var/run/act/'
runner1  | [Continuous Deployment/Build]   ☁  git clone 'https://github.com/actions/checkout' # ref=v4
runner1  | [Continuous Deployment/Build] [DEBUG]   cloning https://github.com/actions/checkout to /root/.cache/act/actions-checkout@v4
runner1  | [Continuous Deployment/Build] [DEBUG] Cloned https://github.com/actions/checkout to /root/.cache/act/actions-checkout@v4
runner1  | [Continuous Deployment/Build] [DEBUG] Checked out v4
runner1  | [Continuous Deployment/Build] [DEBUG] evaluating expression ''
runner1  | [Continuous Deployment/Build] [DEBUG] expression '' evaluated to 'true'
runner1  | [Continuous Deployment/Build] ⭐ Run Main Check out repository code
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/outputcmd.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/statecmd.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/pathcmd.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/envs.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/SUMMARY.md len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Extracting content to '/var/run/act'
runner1  | [Continuous Deployment/Build] [DEBUG] expression '${{ github.repository }}' rewritten to 'format('{0}', github.repository)'
runner1  | [Continuous Deployment/Build] [DEBUG] evaluating expression 'format('{0}', github.repository)'
runner1  | [Continuous Deployment/Build] [DEBUG] expression 'format('{0}', github.repository)' evaluated to '%!t(string=user/react-app-demo)'
runner1  | [Continuous Deployment/Build] [DEBUG] expression '${{ github.token }}' rewritten to 'format('{0}', github.token)'
runner1  | [Continuous Deployment/Build] [DEBUG] evaluating expression 'format('{0}', github.token)'
runner1  | [Continuous Deployment/Build] [DEBUG] expression 'format('{0}', github.token)' evaluated to '%!t(string=***)'
runner1  | [Continuous Deployment/Build] [DEBUG] type=remote-action actionDir=/root/.cache/act/actions-checkout@v4 actionPath= workdir=/workspace/user/react-app-demo actionCacheDir=/root/.cache/act actionName=actions-checkout@v4 containerActionDir=/var/run/act/actions/actions-checkout@v4
runner1  | [Continuous Deployment/Build] [DEBUG] /var/run/act/actions/actions-checkout@v4
runner1  | [Continuous Deployment/Build] [DEBUG] Removing /root/.cache/act/actions-checkout@v4/.gitignore before docker cp
runner1  | [Continuous Deployment/Build]   🐳  docker cp src=/root/.cache/act/actions-checkout@v4/ dst=/var/run/act/actions/actions-checkout@v4/
runner1  | [Continuous Deployment/Build] [DEBUG] Writing tarball /tmp/act1445951625 from /root/.cache/act/actions-checkout@v4/
runner1  | [Continuous Deployment/Build] [DEBUG] Stripping prefix:/root/.cache/act/actions-checkout@v4/ src:/root/.cache/act/actions-checkout@v4/
runner1  | [Continuous Deployment/Build] [DEBUG] Extracting content from '/tmp/act1445951625' to '/var/run/act/actions/actions-checkout@v4/'
runner1  | [Continuous Deployment/Build] [DEBUG] executing remote job container: [node /var/run/act/actions/actions-checkout@v4/dist/index.js]
runner1  | [Continuous Deployment/Build]   🐳  docker exec cmd=[node /var/run/act/actions/actions-checkout@v4/dist/index.js] user= workdir=
runner1  | [Continuous Deployment/Build] [DEBUG] Exec command '[node /var/run/act/actions/actions-checkout@v4/dist/index.js]'
runner1  | [Continuous Deployment/Build] [DEBUG] Working directory '/workspace/user/react-app-demo'
runner1  | [Continuous Deployment/Build]   | OCI runtime exec failed: exec failed: unable to start container process: exec: "node": executable file not found in $PATH: unknown
runner1  | [Continuous Deployment/Build]   ❌  Failure - Main Check out repository code
runner1  | [Continuous Deployment/Build] exitcode '126': failure
runner1  | [Continuous Deployment/Build] [DEBUG] evaluating expression ''
runner1  | [Continuous Deployment/Build] [DEBUG] expression '' evaluated to 'false'
runner1  | [Continuous Deployment/Build] [DEBUG] Skipping step 'npm i' due to ''
runner1  | [Continuous Deployment/Build] [DEBUG] evaluating expression 'always()'
runner1  | [Continuous Deployment/Build] [DEBUG] expression 'always()' evaluated to 'true'
runner1  | [Continuous Deployment/Build] ⭐ Run Post Check out repository code
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/outputcmd.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/statecmd.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/pathcmd.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/envs.txt len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Writing entry to tarball workflow/SUMMARY.md len:0
runner1  | [Continuous Deployment/Build] [DEBUG] Extracting content to '/var/run/act'
runner1  | [Continuous Deployment/Build] [DEBUG] run post step for 'Check out repository code'
runner1  | [Continuous Deployment/Build] [DEBUG] executing remote job container: [node /var/run/act/actions/actions-checkout@v4/dist/index.js]
runner1  | [Continuous Deployment/Build]   🐳  docker exec cmd=[node /var/run/act/actions/actions-checkout@v4/dist/index.js] user= workdir=
runner1  | [Continuous Deployment/Build] [DEBUG] Exec command '[node /var/run/act/actions/actions-checkout@v4/dist/index.js]'
runner1  | [Continuous Deployment/Build] [DEBUG] Working directory '/workspace/user/react-app-demo'
runner1  | [Continuous Deployment/Build]   | OCI runtime exec failed: exec failed: unable to start container process: exec: "node": executable file not found in $PATH: unknown
runner1  | [Continuous Deployment/Build]   ❌  Failure - Post Check out repository code
runner1  | [Continuous Deployment/Build] Cleaning up container for job Build
runner1  | [Continuous Deployment/Build] [DEBUG] Removed container: a9df613340b8ad7e33b75a6fe123f21ee15e0f5ee6e67c9716f8f552e3c6ab17
runner1  | [Continuous Deployment/Build] [DEBUG]   🐳  docker volume rm GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build
runner1  | [Continuous Deployment/Build] [DEBUG]   🐳  docker volume rm GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-env
runner1  | [Continuous Deployment/Build] Cleaning up network for job Build, and network name is: GITEA-ACTIONS-TASK-19_WORKFLOW-Continuous-Deployment_JOB-Build-Build-network
runner1  | [Continuous Deployment/Build] 🏁  Job failed

s