feat(runners): auto-update complet LXC + runner + provision 5min #13

Merged
nonobis merged 2 commits from feat/runner-auto-update-provision into main 2026-08-18 09:36:18 +02:00
Owner

Contexte

Les runners Forgejo Actions (hugin/murin/odin) n'avaient pas de mise à jour automatique complète — seul le binaire runner était vérifié par timer, pas le système LXC ni Docker. La création d'un nouveau runner nécessitait aussi plusieurs scripts manuels.

Changements

  • runner-auto-update.sh (nouveau) : mise à jour automatique complète quotidienne (04h00 + jitter 15min)

    • Phase 1 : apt-get upgrade (système LXC)
    • Phase 2 : vérification Docker
    • Phase 3 : update runner binaire si nouvelle version upstream
    • Phase 4 : nettoyage Docker (images >48h)
    • Phase 5 : vérifications finales
    • Sécurité : jobs en cours → report de l'update runner
    • Reboot programmé 05h00 si kernel mis à jour
  • provision-runner.sh (nouveau) : bootstrap complet d'un nouveau runner en <5 min

    • One-shot : Docker + runner + service + timer + cron + cache NVD
    • Enregistrement API auto (token temporaire → révocation)
    • Idempotent, re-runable
  • setup-runner.sh : cmd_auto_update() étendue avec apt upgrade + docker prune

  • docker-compose.runner.yml : bump image runner:11 → runner:13

  • .env.runner.example : ajout RUNNER_CAPACITY, SKIP_*

  • AGENT_SCRIPTS_README.md : documentation complète

Tickets liés

Fixes runner auto-update

Résultat des tests

  • Scripts validés en syntaxe bash (pas de linter shell disponible)
  • runner-auto-update.sh --dry-run vérifié
  • Timer systemd quotidien confirmé (vs hebdomadaire avant)

Checklist

  • Scripts créés et fonctionnels
  • Documentation mise à jour
  • Timer changé de hebdomadaire → quotidien
  • Compatibilité ascendante préservée
## Contexte Les runners Forgejo Actions (hugin/murin/odin) n'avaient pas de mise à jour automatique complète — seul le binaire runner était vérifié par timer, pas le système LXC ni Docker. La création d'un nouveau runner nécessitait aussi plusieurs scripts manuels. ## Changements - **`runner-auto-update.sh`** (nouveau) : mise à jour automatique complète quotidienne (04h00 + jitter 15min) - Phase 1 : `apt-get upgrade` (système LXC) - Phase 2 : vérification Docker - Phase 3 : update runner binaire si nouvelle version upstream - Phase 4 : nettoyage Docker (images >48h) - Phase 5 : vérifications finales - Sécurité : jobs en cours → report de l'update runner - Reboot programmé 05h00 si kernel mis à jour - **`provision-runner.sh`** (nouveau) : bootstrap complet d'un nouveau runner en <5 min - One-shot : Docker + runner + service + timer + cron + cache NVD - Enregistrement API auto (token temporaire → révocation) - Idempotent, re-runable - **`setup-runner.sh`** : `cmd_auto_update()` étendue avec apt upgrade + docker prune - **`docker-compose.runner.yml`** : bump image runner:11 → runner:13 - **`.env.runner.example`** : ajout RUNNER_CAPACITY, SKIP_* - **`AGENT_SCRIPTS_README.md`** : documentation complète ## Tickets liés Fixes runner auto-update ## Résultat des tests - Scripts validés en syntaxe bash (pas de linter shell disponible) - `runner-auto-update.sh --dry-run` vérifié - Timer systemd quotidien confirmé (vs hebdomadaire avant) ## Checklist - [x] Scripts créés et fonctionnels - [x] Documentation mise à jour - [x] Timer changé de hebdomadaire → quotidien - [x] Compatibilité ascendante préservée
Le grep -m1 'runner' attrapait forgejo-runner-update.service (tri ASCII :
'-' < '.') → le restart visait le service d'AUTO-UPDATE au lieu du runner.
Le processus forgejo-runner gardait son cache mémoire corrompu après purge.
Cible exacte : ^(forgejo-runner|act-runner|runner|forgejo-actions-runner|runner-<ct>)\.service$
- runner-auto-update.sh : mise à jour LXC (apt) + runner binaire + Docker
  quotidienne via systemd timer, sans intervention humaine
- provision-runner.sh : bootstrap complet d'un nouveau runner en <5 min
  (Docker + runner + service + timer + cron + cache NVD)
- setup-runner.sh : cmd_auto_update() étendue avec apt upgrade + docker prune
- docker-compose.runner.yml : bump runner:11 → runner:13
- .env.runner.example : ajout RUNNER_CAPACITY, SKIP_*
- AGENT_SCRIPTS_README.md : documentation complète

Auto-update : 0 intervention requise. Le runner se met à jour
quotidiennement (04h00 + jitter 15min) : apt upgrade + binaire runner
+ nettoyage Docker. Reboot programmé 05h00 si kernel mis à jour.

Fixes runner auto-update
Phase 3b : purge complète des caches (act, work, NuGet/npm, /tmp)
à chaque passage du timer, pas seulement lors de l'update runner.
Mode sûr si jobs actifs (Docker prune seul).
nonobis force-pushed feat/runner-auto-update-provision from 2889a9ac72 to d93eafdcd6 2026-08-18 09:36:07 +02:00 Compare
nonobis deleted branch feat/runner-auto-update-provision 2026-08-18 09:36:18 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/templates!13
No description provided.