CI/CD : Forgejo Actions (pas GitLab - le dépôt vit sur Forgejo)
All checks were successful
CI / build-and-test (push) Successful in 2m34s
CI / deploy (push) Successful in 3m8s

- .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:
Adam Belkacemi 2026-09-17 13:30:36 +02:00
parent 7802c59931
commit c6aa75ba39
4 changed files with 143 additions and 0 deletions

View file

@ -34,6 +34,7 @@ tenté, non simulé.
| `tripoli-netctl` (Rust, Phase 4) | Fait — `tripoli-netctl/`, labo pédagogique (netns + veth via `rtnetlink`), testé sur le serveur (création, ping traversant la veth, destruction propre), **volontairement pas branché sur le trafic de prod** |
| Observabilité (Phase 5) | Fait — pas de stack dédiée (réutilise le Prometheus/Grafana partagé existant), scrape tripoli-edge + alertes (down, disque) + dashboard versionné (`monitoring/`), vérifié via l'API Prometheus/Grafana |
| Bird/BGP (Phase 6, bonus) | Fait — `bird-lab/`, BGP+BFD entre 2 namespaces via la racine en transit (AS 65000/65010/65011), vérifié (sessions Established, BFD Up, propagation de route, détection de panne sur coupure de lien), puis proprement démonté |
| CI/CD | Fait — `.forgejo/workflows/ci.yml` (pas `.gitlab-ci.yml` : le dépôt vit sur Forgejo, pas GitLab). Runner Forgejo Actions déployé en systemd, déploiement via un compte `deploy` sans privilège (`ci/README.md`) |
## Dépôt