We have been using self-hosted runners managed by ARC in our Kubernetes cluster for our GHA workflow needs. In our current setup of ARC we are configuring Kubernetes mode with persistent volumes by providing below values to the helm chart:
containerMode:
type: "kubernetes"
kubernetesModeWorkVolumeClaim:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 3Gi
Our plan is to migrate to a kubernetes-novolume mode that was introduced by actions/actions-runner-controller#4250, but we are hitting a blocker at the moment when we are configuring ARC with below values to it's helm chart :
containerMode:
type: "kubernetes-novolume"
The blocker is as follows:
Any marketplace actions like actions/checkout that are Javascript based and that need node binaries at path /__e/ are failing with error as :
[0](https://github.com/Egencia/orawli-test/actions/runs/25205597320/job/73905379626#step:6:22) env: can't execute '/__e/node24_alpine/bin/node': No such file or directory.
On investigation it was found that Node binaries are available in "Kubernetes volume" mode because of the following volumeMount on the workflow pod:
- mountPath: /__e
name: work
subPath: externals
In "Kubernetes volume" mode node binaries are available at runner pod's source path /home/runner/_work/externals which are then shared with workflow pod through the above volume mount, but in "Kubernetes novolume mode" they are not copied over by the hook, though they are available in the runner pod at a different path: /home/runner/externals
The custom container image that we have been using to create the workflow pods has node binaries in it but that path can't be overridden to run JS marketplace actions.
Another directory that is missing from the workflow pod is /github, though the subdirectories such as workflow and home which should be there inside /github dir are present at /__w/_temp/_github_* in the same pod. As a result files such as /github/workflow/event.json that are referred by $GITHUB_EVENT_PATH are missing.
We have been using self-hosted runners managed by ARC in our Kubernetes cluster for our GHA workflow needs. In our current setup of ARC we are configuring Kubernetes mode with persistent volumes by providing below values to the helm chart:
Our plan is to migrate to a
kubernetes-novolumemode that was introduced by actions/actions-runner-controller#4250, but we are hitting a blocker at the moment when we are configuring ARC with below values to it's helm chart :The blocker is as follows:
Any marketplace actions like
actions/checkoutthat are Javascript based and that need node binaries at path/__e/are failing with error as :[0](https://github.com/Egencia/orawli-test/actions/runs/25205597320/job/73905379626#step:6:22) env: can't execute '/__e/node24_alpine/bin/node': No such file or directory.On investigation it was found that Node binaries are available in "Kubernetes volume" mode because of the following volumeMount on the workflow pod:
In "Kubernetes volume" mode node binaries are available at runner pod's source path
/home/runner/_work/externalswhich are then shared with workflow pod through the above volume mount, but in "Kubernetes novolume mode" they are not copied over by the hook, though they are available in the runner pod at a different path:/home/runner/externalsThe custom container image that we have been using to create the workflow pods has node binaries in it but that path can't be overridden to run JS marketplace actions.
Another directory that is missing from the workflow pod is
/github, though the subdirectories such asworkflowandhomewhich should be there inside/githubdir are present at/__w/_temp/_github_*in the same pod. As a result files such as/github/workflow/event.jsonthat are referred by$GITHUB_EVENT_PATHare missing.