actions / actions/actions-runner-controller
Can I use a locally built image for the runner? It keeps trying to pull the image from the registry
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 1.5k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 27
Description
What would you like added?
A clear and concise description of what you want to happen.
I want to use my custom image which i built locally. I've checked that the image exists locally using docker ps and I tried to override the imagePullPolicy in the runner-scale-set/values.yaml to Never. But it's still trying to pull images from the registry.
tail values.yaml -n 20
## storageClassName: "local-path"
## resources:
## requests:
## storage: 1Gi
spec:
containers:
- name: runner
imagePullPolicy: Never
image: github-runner:latest
command: ["/home/runner/run.sh"]
## Optional controller service account that needs to have required Role and RoleBinding
## to operate this gha-runner-scale-set installation.
## The helm chart will try to find the controller deployment and its service account at installation time.
## In case the helm chart can't find the right service account, you can explicitly pass in the following value
## to help it finish RoleBinding with the right service account.
## Note: if your controller is installed to only watch a single namespace, you have to pass these values explicitly.
# controllerServiceAccount:
# namespace: arc-system
# name: test-arc-gha-runner-scale-set-controller
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
github-runner latest ee0e556e28ce 25 hours ago 1.89GB
docker dind 1feaad25659a 3 days ago 365MB
ghcr.io/actions/actions-runner latest 9f541e249fd4 10 days ago 1.14GB
registry.k8s.io/kube-apiserver v1.30.0 c42f13656d0b 3 weeks ago 117MB
registry.k8s.io/kube-controller-manager v1.30.0 c7aad43836fa 3 weeks ago 111MB
registry.k8s.io/kube-scheduler v1.30.0 259c8277fcbb 3 weeks ago 62MB
registry.k8s.io/kube-proxy v1.30.0 a0bf559e280c 3 weeks ago 84.7MB
ghcr.io/actions/gha-runner-scale-set-controller 0.9.1 9ffa9943ca6b 3 weeks ago 199MB
registry.k8s.io/etcd 3.5.12-0 3861cfcd7c04 3 months ago 149MB
registry.k8s.io/coredns/coredns v1.11.1 cbb01a7bd410 9 months ago 59.8MB
registry.k8s.io/pause 3.9 e6f181688397 19 months ago 744kB
gcr.io/k8s-minikube/storage-provisioner v5 6e38f40d628d 3 years ago 31.5MB
kubectl -n arc-runners get pods
NAME READY STATUS RESTARTS AGE
self-hosted-x64-linux-api-nz55j-runner-2lms2 0/2 Init:ImagePullBackOff 0 18s
self-hosted-x64-linux-api-nz55j-runner-ws72n 0/2 Init:ImagePullBackOff 0 18s
kubectl -n arc-runners describe pod self-hosted-x64-linux-api-nz55j-runner-2lms2 | tail -n 20
SizeLimit: <unset>
kube-api-access-ntn9m:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m47s default-scheduler Successfully assigned arc-runners/self-hosted-x64-linux-api-nz55j-runner-2lms2 to arc
Normal Pulling 78s (x4 over 2m46s) kubelet Pulling image "github-runner:latest"
Warning Failed 78s (x4 over 2m46s) kubelet Failed to pull image "github-runner:latest": Error response from daemon: pull access denied for github-runner, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Warning Failed 78s (x4 over 2m46s) kubelet Error: ErrImagePull
Warning Failed 67s (x6 over 2m46s) kubelet Error: ImagePullBackOff
Normal BackOff 52s (x7 over 2m46s) kubelet Back-off pulling image "github-runner:latest"
Note: Feature requests to integrate vendor specific cloud tools (e.g. awscli, gcloud-sdk, azure-cli) will likely be rejected as the Runner image aims to be vendor agnostic.
Why is this needed?
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with runner-scale-set/values.yaml and the generated runner pod specification, then inspect the pod events from kubectl describe to trace where imagePullPolicy is applied. Done means a locally built github-runner:latest image can be used by the runner without attempting a registry pull, with the relevant configuration behavior documented or tested.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, github-actions, helm, kubernetes
- Domain
- ci-cd, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100