fix(gitea): migrate to gitea/runner image, fix daemon config not loading

The renamed gitea/runner project (v1.0.0+) is a straight rename of
act_runner with the binary renamed to gitea-runner. While inspecting
its run.sh, found the actual root cause of the cache config being
ignored all along: run.sh builds --config from the CONFIG_FILE env
var, not from any command: override - it always execs the binary
itself regardless of passed args. The runner service never set
CONFIG_FILE, so runner-config.yaml was never actually loaded by the
daemon despite being correctly mounted.
This commit is contained in:
2026-08-24 11:55:54 +02:00
parent 79f0c1a293
commit 50b7ee1b5c
+12 -6
View File
@@ -63,10 +63,9 @@ services:
networks:
- compose_network
runner:
image: gitea/act_runner:latest
image: gitea/runner:latest
container_name: gitea_runner
privileged: true
command: ["act_runner", "daemon", "--config", "/data/config.yaml"]
environment:
TZ: ${TIMEZONE:-Europe/Amsterdam}
GITEA_INSTANCE_URL: https://${TRAEFIK_HOST}
@@ -74,6 +73,13 @@ services:
GITEA_RUNNER_NAME: docker-runner
GITEA_RUNNER_LABELS: ubuntu-latest:docker://catthehacker/ubuntu:act-latest,ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04,ubuntu-20.04:docker://catthehacker/ubuntu:act-20.04
DOCKER_HOST: unix:///var/run/docker.sock
# run.sh (the image's entrypoint script) builds its --config arg from
# this env var, not from any `command:` override - it always execs the
# binary itself and ignores compose's command/args entirely. This was
# almost certainly why runner-config.yaml's cache settings never took
# effect despite being correctly mounted: without CONFIG_FILE set, the
# daemon never even loaded that file.
CONFIG_FILE: /data/config.yaml
# Lets this container itself resolve host.docker.internal too (used by
# cache.external_server in runner-config.yaml) - the daemon needs this
# for its own pre-registration calls to runner-cache-server, separately
@@ -89,13 +95,13 @@ services:
networks:
- compose_network
runner-cache-server:
image: gitea/act_runner:latest
image: gitea/runner:latest
container_name: gitea_runner_cache
# The image's default entrypoint (run.sh) ignores any command args and
# always registers-then-execs `act_runner daemon` regardless - it has no
# cache-server mode. Bypass it entirely and invoke act_runner directly.
# always registers-then-execs `gitea-runner daemon` regardless - it has no
# cache-server mode. Bypass it entirely and invoke the binary directly.
entrypoint: ["/sbin/tini", "--"]
command: ["act_runner", "cache-server", "--config", "/data/config.yaml", "--host", "0.0.0.0", "--port", "8088", "--dir", "/data/cache"]
command: ["gitea-runner", "cache-server", "--config", "/data/config.yaml", "--host", "0.0.0.0", "--port", "8088", "--dir", "/data/cache"]
environment:
TZ: ${TIMEZONE:-Europe/Amsterdam}
ports: