diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml index 7f5c4cc..14757f4 100644 --- a/infra/docker-compose.yml +++ b/infra/docker-compose.yml @@ -109,14 +109,16 @@ services: image: data.forgejo.org/forgejo/runner:6 container_name: act_runner restart: unless-stopped + command: ["/entrypoint.sh"] environment: FORGEJO_INSTANCE_URL: https://${FORGEJO_DOMAIN} - FORGEJO_RUNNER_REGISTRATION_TOKEN: ${FORGEJO_RUNNER_TOKEN} + FORGEJO_RUNNER_TOKEN: ${FORGEJO_RUNNER_TOKEN} FORGEJO_RUNNER_NAME: hiy-runner # Give the runner access to Podman so CI jobs can build/run containers. DOCKER_HOST: tcp://podman-proxy:2375 volumes: - act_runner_data:/data + - ./runner-entrypoint.sh:/entrypoint.sh:ro depends_on: - forgejo - podman-proxy diff --git a/infra/runner-entrypoint.sh b/infra/runner-entrypoint.sh new file mode 100755 index 0000000..98611a3 --- /dev/null +++ b/infra/runner-entrypoint.sh @@ -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"