CI/CD : Forgejo Actions (pas GitLab - le dépôt vit sur Forgejo)
- .forgejo/workflows/ci.yml : build + test cargo (workspace), build npm (app/) sur toute PR/push ; déploiement (main uniquement) : build release, scp + redémarrage systemd sur tripoli-edge et tripoli-api. - Runner Forgejo Actions déployé en systemd (aucun n'existait avant) : socket Docker de l'hôte partagé avec les conteneurs de job plutôt qu'un docker:dind imbriqué et privilégié - plus léger sur une machine déjà partagée. - Déploiement via un compte système "deploy" sans privilège : peut seulement déposer un binaire dans /opt/deploy-staging et lancer un script sudo dédié qui n'accepte que "tripoli-edge" ou "tripoli-api" comme argument. Aucune clé root dans le pipeline. Clé SSH de déploiement générée sur le serveur, jamais passée par cette conversation - stockée directement comme secret Forgejo Actions par l'utilisateur. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
7802c59931
commit
c6aa75ba39
4 changed files with 143 additions and 0 deletions
24
ci/forgejo-runner.service
Normal file
24
ci/forgejo-runner.service
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
[Unit]
|
||||
Description=forgejo-runner - runner Forgejo Actions pour tripoli.cloud
|
||||
After=docker.service
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
# --group-add : le gid du groupe "docker" sur l'hôte (docker.sock lui
|
||||
# appartient) - sans ça, le processus (uid 1001, sans privilège) n'a
|
||||
# pas le droit de s'en servir, même monté dans le conteneur.
|
||||
ExecStart=/usr/bin/docker run --rm \
|
||||
--name forgejo-runner \
|
||||
--user 1001:1001 \
|
||||
--group-add 983 \
|
||||
-v /opt/forgejo-runner/data:/data \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
code.forgejo.org/forgejo/runner:13.1 \
|
||||
forgejo-runner daemon --config /data/config.yml
|
||||
ExecStop=/usr/bin/docker stop forgejo-runner
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Loading…
Add table
Add a link
Reference in a new issue