actions / actions-runner-controller

Kubernetes controller for GitHub Actions self-hosted runners
Apache License 2.0
4.76k stars 1.12k forks source link

DIND gha-runner-scale-set: cp: cannot stat '/home/runner/externals/.': No such file or directory #3634

Open rdvansloten opened 4 months ago

rdvansloten commented 4 months ago

Checks

Controller Version

0.9.3

Deployment Method

Helm

Checks

To Reproduce

- Install latest oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
- Watch as "init-dind-externals" errors out with cp: cannot stat '/home/runner/externals/.': No such file or directory

Describe the bug

Expected my init-dind-externals to work.

Describe the expected behavior

init-dind-externals should start, so that my runner can.

Additional Context

Using this Dockerfile build from the main branch of the repo:
actions-runner-dind.ubuntu-22.04.dockerfile

Passing this values file, straight from the docs, with edits where needed. The images are from my private registry, since our firewall doesn't allow remote pull. I imported/built official Dockerfiles from the repo, or pulled straight from ghcr. I built/imported everything for 0.9.3 today.

githubConfigUrl: "https://github.com/my-company"
githubConfigSecret:
  github_token: "redacted"

runnerGroup: "redacted"

template:
  spec:
    initContainers:
      - name: init-dind-externals
        image: redacted.azurecr.io/actions/actions-runner:latest
        command:
          ["cp", "-r", "-v", "/home/runner/externals/.", "/home/runner/tmpDir/"]
        volumeMounts:
          - name: dind-externals
            mountPath: /home/runner/tmpDir
    containers:
      - name: runner
        image: redacted.azurecr.io/actions/actions-runner:latest
        command: ["/home/runner/run.sh"]
        env:
          - name: DOCKER_HOST
            value: unix:///var/run/docker.sock
        volumeMounts:
          - name: work
            mountPath: /home/runner/_work
          - name: dind-sock
            mountPath: /var/run
      - name: dind
        image: redacted.azurecr.io/library/docker:26.1.4-dind
        args:
          - dockerd
          - --host=unix:///var/run/docker.sock
          - --group=$(DOCKER_GROUP_GID)
        env:
          - name: DOCKER_GROUP_GID
            value: "123"
        securityContext:
          privileged: true
        volumeMounts:
          - name: work
            mountPath: /home/runner/_work
          - name: dind-sock
            mountPath: /var/run
          - name: dind-externals
            mountPath: /home/runner/externals
    volumes:
      - name: work
        emptyDir: {}
      - name: dind-sock
        emptyDir: {}
      - name: dind-externals
        emptyDir: {}

### Controller Logs

```shell
Controller has no opinion about a crashing init container.

Runner Pod Logs

`cp: cannot stat '/home/runner/externals/.': No such file or directory`
github-actions[bot] commented 4 months ago

Hello! Thank you for filing an issue.

The maintainers will triage your issue shortly.

In the meantime, please take a look at the troubleshooting guide for bug reports.

If this is a feature request, please review our contribution guidelines.

umaasik commented 4 months ago

I'm running into the same issue using rootless images.

aaronmassicotte commented 4 months ago

Same boat here, on 0.9.2. It's odd because this is only occurring on one of 3 runnersets, all using the same helm chart and cluster

claytonchew commented 2 months ago

Submitted a fix (#3740) for this.

AurimasNav commented 1 month ago

I'm encountering this when trying to use values.yaml to specify my runner image:

template:
  spec:
    containers:
    - name: runner
      image: private-repo.com/actions-runner:latest
      command: ["/home/runner/run.sh"]

which is built using Dockerfile:

FROM summerwind/actions-runner:latest

USER root

RUN echo 'APT::Install-Suggests "0";' >> /etc/apt/apt.conf.d/00-docker
RUN echo 'APT::Install-Recommends "0";' >> /etc/apt/apt.conf.d/00-docker

RUN <<EOF
. /etc/os-release
wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y -qq powershell
EOF

USER runner
AurimasNav commented 1 month ago

problem went away when using ghcr.io/actions/actions-runner:latestas base image instead of summerwind/actions-runner:latest