1. Forgejo CI is broken across all repos
Every workflow fails because runner labels point to a bare Alpine image with nothing in it.
┌────────────────────────────────────────┬──────────────────────────────────────┐
│ Before │ After │
├────────────────────────────────────────┼──────────────────────────────────────┤
│ golang:docker://forgejo/runner:6 │ golang:docker://golang:1.26-bookworm │
├────────────────────────────────────────┼──────────────────────────────────────┤
│ No Go, no Node.js, no apt-get, no root │ Go, git, apt-get, root │
└────────────────────────────────────────┴──────────────────────────────────────┘
Plus the docker socket isn't shared between dind sidecar and runner, so even if docker CLI existed, it can't reach the daemon.
┌───────────────────────────────────────────┬─────────────────────────────────────────────────────────────┐
│ Before │ After │
├───────────────────────────────────────────┼─────────────────────────────────────────────────────────────┤
│ dind creates socket in its own filesystem │ Shared /run emptyDir volume │
├───────────────────────────────────────────┼─────────────────────────────────────────────────────────────┤
│ Runner can't see it │ Both containers see /run/docker.sock │
├───────────────────────────────────────────┼─────────────────────────────────────────────────────────────┤
│ No docker_host config │ docker_host: automount passes socket to workflow containers │
Co-authored-by: rock <[email protected]>
- Fix template to use .Values.gc.schedule instead of hardcoded cron
- Change schedule from daily 03:00 UTC to every 30 minutes
- Prevents DinD PVC fill-up (was at 93% before manual prune)
- Add gc-cronjob.yaml: daily prune of DinD Docker images/volumes/build-cache
and actcache across all forgejo-runner pods. Keeps :latest tagged images,
deletes non-latest older than 72h.
- Expand runner reg PVCs from 1Gi to 20Gi (all three runners) to prevent
action tool cache from filling disk.
- Rust runner gets explicit 20Gi persistence override.
- GC only renders from golang (default) values to avoid duplicate resources.
- Runner egress: allow 192.168.1.160/32:443. forgejo.riotpiao.com resolves to
the ingress LB, inside the 192.168.1.0/24 block the NetworkPolicy denies, so
docker push hung until timeout.
- dind CA: also mount homelab-ca at /etc/docker/certs.d/forgejo.riotpiao.com/,
the path dockerd actually reads for per-registry trust.
- Pull secret: dockerconfigjson for the api namespace; /v2/ answers 401.
- AppProject: allow the Forgejo repo as a source for api-gw.