fix: add runner-entrypoint.sh to register Forgejo runner on first start

The data.forgejo.org/forgejo/runner image doesn't auto-register from
env vars — it needs create-runner-file called explicitly before the
daemon starts. The entrypoint handles registration on first run (no
/data/.runner file) then execs the daemon on all subsequent starts.

https://claude.ai/code/session_01FKCW3FDjNFj6jve4niMFXH
This commit is contained in:
Claude 2026-03-27 14:41:45 +00:00
parent 3afdc66ec2
commit 4ac5700ac5
No known key found for this signature in database
2 changed files with 25 additions and 1 deletions

View file

@ -109,14 +109,16 @@ services:
image: data.forgejo.org/forgejo/runner:6 image: data.forgejo.org/forgejo/runner:6
container_name: act_runner container_name: act_runner
restart: unless-stopped restart: unless-stopped
command: ["/entrypoint.sh"]
environment: environment:
FORGEJO_INSTANCE_URL: https://${FORGEJO_DOMAIN} FORGEJO_INSTANCE_URL: https://${FORGEJO_DOMAIN}
FORGEJO_RUNNER_REGISTRATION_TOKEN: ${FORGEJO_RUNNER_TOKEN} FORGEJO_RUNNER_TOKEN: ${FORGEJO_RUNNER_TOKEN}
FORGEJO_RUNNER_NAME: hiy-runner FORGEJO_RUNNER_NAME: hiy-runner
# Give the runner access to Podman so CI jobs can build/run containers. # Give the runner access to Podman so CI jobs can build/run containers.
DOCKER_HOST: tcp://podman-proxy:2375 DOCKER_HOST: tcp://podman-proxy:2375
volumes: volumes:
- act_runner_data:/data - act_runner_data:/data
- ./runner-entrypoint.sh:/entrypoint.sh:ro
depends_on: depends_on:
- forgejo - forgejo
- podman-proxy - podman-proxy

22
infra/runner-entrypoint.sh Executable file
View file

@ -0,0 +1,22 @@
#!/bin/sh
# runner-entrypoint.sh — register the Forgejo runner on first start, then run the daemon.
#
# On first run (no /data/.runner file) it calls create-runner-file to register
# with the Forgejo instance using FORGEJO_RUNNER_TOKEN. On subsequent starts it
# goes straight to the daemon.
set -e
CONFIG=/data/.runner
if [ ! -f "$CONFIG" ]; then
echo "[runner] No registration found — registering with Forgejo…"
forgejo-runner create-runner-file \
--instance "${FORGEJO_INSTANCE_URL}" \
--secret "${FORGEJO_RUNNER_TOKEN}" \
--name "${FORGEJO_RUNNER_NAME:-hiy-runner}" \
--connect
echo "[runner] Registration complete."
fi
echo "[runner] Starting daemon…"
exec forgejo-runner daemon --config "$CONFIG"