Files
esh-pfi-infrastructure/stacks/gitea-runner/.env.example
T
vh f014d5534a gitea-runner: stack + playbook for self-hosted Actions
Central runner on ana-docker (gitea is local; existing fleet tooling
already SSHes from there). Playbook is parameterized so future
site-local runners (nh3-docker, esh-docker-vm) drop in via --var
overrides instead of copy-paste.

Includes a workflow template for vh/task-board that calls the existing
deploy-task-board.yaml playbook — keeps the playbook as the single
source of truth for "how task-board is deployed", manual or automated.

Labels embed `:docker://node:20-bookworm-slim` schema; without it,
act_runner v0.6+ silently falls back to host-mode and runs job steps
inside the Alpine runner container (no apt/python/node), breaking any
real workflow. node:20-bookworm-slim is small + has git + node so
actions/checkout works out of the box.
2026-04-29 18:12:36 -07:00

43 lines
1.9 KiB
Bash

# Gitea instance the runner polls.
GITEA_INSTANCE_URL=https://gitea.phasefinal.com
# Runner identity. NAME shows in the runner list in gitea admin;
# LABELS is what `runs-on:` in workflow YAML matches against.
#
# `pfi-fleet` is the cross-host label used by all PFI runners — keep
# it on every runner. The host-specific label (ana-docker, nh3-docker,
# esh-docker-vm) lets a workflow pin to a particular site if it has to
# (e.g. needs LAN access to a host only reachable from there).
#
# Each label MUST carry a `:docker://<image>` schema. Without it,
# act_runner v0.6+ falls back to "host" mode — jobs would execute
# inside the runner container itself (Alpine, no apt/python/node)
# instead of in a spawned job container, breaking any workflow that
# expects a normal Linux userspace.
#
# `node:20-bookworm-slim` is a sane default: small (~150 MB), has git
# + node (so `actions/checkout@v4` and other JS-based actions work),
# debian-based so `apt-get install` works. Workflows can still override
# with their own job-level `container: image:` if they need something
# different.
GITEA_RUNNER_NAME=ana-docker-runner
GITEA_RUNNER_LABELS=pfi-fleet:docker://node:20-bookworm-slim,ana-docker:docker://node:20-bookworm-slim
# One-time registration token. Generate at:
# https://gitea.phasefinal.com/-/admin/actions/runners (org/global)
# or:
# https://gitea.phasefinal.com/<owner>/<repo>/settings/actions/runners (repo)
#
# Used only on first start; afterwards the runner caches a permanent
# token at ${DATA_DIR}/.runner. Safe to clear after the runner shows
# up in the gitea admin runner list.
GITEA_RUNNER_REGISTRATION_TOKEN=
# Persistence (.runner credentials, build cache, working dirs).
DATA_DIR=/opt/docker/conf/gitea-runner/data
# Pin to a tagged release in production; :latest is fine for
# bootstrapping. Check https://gitea.com/gitea/act_runner/releases
# for the current stable.
RUNNER_IMAGE=gitea/act_runner:latest