Wiki/infra/forgejo-runner
Corentin JOGUET ecb7a44c3c
Some checks are pending
CI / Lint bridge (Biome) (push) Waiting to run
CI / Type-check bridge (push) Blocked by required conditions
CI / Tests unit bridge (push) Blocked by required conditions
CI / Tests integration bridge (push) Blocked by required conditions
CI / Security scan (push) Waiting to run
CI / Docker build + healthcheck (push) Blocked by required conditions
ops(infra): add Forgejo Actions Runner skeleton
- infra/forgejo-runner/compose.yml : runner v6.5.0 avec auto-register
- infra/forgejo-runner/.env.example : variables registration
- infra/forgejo-runner/README.md : setup + usage + securite + troubleshooting
- infra/README.md : index

Le runner est OPTIONNEL et a deployer separement quand on veut activer le CI
sur git.acadenice.com. Tant que pas deploye, les workflows GitHub Actions
restent actifs sur github.com/AcadeNice/wiki (mirror).
2026-05-07 13:49:19 +02:00
..
.env.example ops(infra): add Forgejo Actions Runner skeleton 2026-05-07 13:49:19 +02:00
compose.yml ops(infra): add Forgejo Actions Runner skeleton 2026-05-07 13:49:19 +02:00
README.md ops(infra): add Forgejo Actions Runner skeleton 2026-05-07 13:49:19 +02:00

Forgejo Actions Runner

Runner CI/CD pour les workflows GitHub Actions execute sur git.acadenice.com.

Architecture

git.acadenice.com (Forgejo 10.0.3)
        ↓ poll long-running connection
   Forgejo Runner (ce service)
        ↓ docker.sock
     Docker host
        ↓ run jobs
     Containers ephemeres (build, test, deploy)

Prerequis

  • Docker + Docker Compose v2 sur le host
  • Acces sortant vers git.acadenice.com
  • Acces a docker.sock (mount /var/run/docker.sock)
  • Pour les jobs avec containers : Docker daemon avec privileges suffisants

Setup (premiere fois)

1. Recuperer un token de registration

Option A — via API (organizations) :

curl -sf -H "Authorization: token <TON_TOKEN_ADMIN>" \
  https://git.acadenice.com/api/v1/orgs/AcadeNice/actions/runners/registration-token \
  | jq -r '.token'

Option B — via UI Forgejo (recommande pour debutant) :

  • git.acadenice.com → Login → Site Administration → Actions → Runners → Create new runner
  • Copier le token affiche

Le token expire 30 min apres generation.

2. Configurer .env

cd infra/forgejo-runner
cp .env.example .env
# editer .env :
# FORGEJO_RUNNER_REGISTRATION_TOKEN=<token genere>

3. Up

docker compose up -d
docker compose logs -f
# Attendre "Runner registered successfully"

4. Verifier sur Forgejo

git.acadenice.com → Site Administration → Actions → Runners → le runner doit apparaitre comme Online.

Apres setup — usage

Les workflows .github/workflows/*.yml ou .forgejo/workflows/*.yml du repo AcadeNice/Wiki se declenchent automatiquement apres push.

Le runner pull les jobs et les execute en containers Docker.

Workflows compatibles

Forgejo Actions est 95% compatible GitHub Actions syntax. La majorite des workflows GitHub marchent tels quels.

Differences notables :

  • actions/checkout@v4 : marche, mais resolu via le marketplace gitea/actions (configure auto par le runner)
  • Secrets : a configurer dans Forgejo UI au niveau repo OU org
  • GITHUB_TOKEN : remplace par GITEA_TOKEN (ou alias compatible)
  • Pas de support actions/setup-node@v4 directement — il faut un runner avec Node pre-installe OU utiliser une image custom

Recommandation : pinner les actions tierces sur des SHA commit pour eviter les surprises.

Maintenance

Tache Frequence
Bump runner version Tous les 2-3 mois (cf releases)
Cleanup docker images cache Mensuel (docker system prune -a apres backup)
Verifier logs docker compose logs --tail=100 Hebdomadaire
Backup runner data volume Quotidien (config seulement, pas de state critique)

Securite

  • docker.sock mount = privilege root sur le host. Le runner peut creer/supprimer n'importe quel container. Ne pas heberger sur un host sensible.
  • Recommandation : VPS dedie pour le runner (5€/mois Hetzner CPX11).
  • Si VPS partage : utiliser docker-in-docker (DinD) au lieu de docker.sock mount.

Troubleshooting

Symptome Cause probable Fix
Runner "Offline" sur Forgejo Token expire ou network Regenerer token, restart container
Job stuck en pending Pas de runner disponible avec les labels demandes Verifier runs-on du workflow vs labels du runner
permission denied sur docker.sock User dans le container n'est pas root Verifier user: "0:0" dans compose
Build lent Pas de cache Docker Activer BuildKit avec DOCKER_BUILDKIT=1

References