3.4 KiB
3.4 KiB
Architecture de l'infrastructure Git CI/CD
Vue d'ensemble
Cette infrastructure fournit une solution complete de gestion de code source et d'integration continue.
+------------------+
| Utilisateurs |
+--------+---------+
|
+--------------+--------------+
| |
v v
+-------------------+ +-------------------+
| git.syoul.fr | | ci.syoul.fr |
| (Gitea :3300) | | (Woodpecker:9001)|
+--------+----------+ +--------+----------+
| |
| +---------------------+ |
+-->| Consul :8500 |<--+
| Service Discovery |
+----------+----------+
|
+----------+----------+
| Registrator |
| (auto-registration) |
+---------------------+
|
+-------------+-------------+
| |
+---------+---------+ +---------+---------+
| PostgreSQL | | Woodpecker |
| (gitea_db) | | Agent |
+-------------------+ +-------------------+
Composants
Services principaux
| Service | Port externe | Port interne | Description |
|---|---|---|---|
| Gitea | 3300 | 3000 | Serveur Git auto-heberge |
| Gitea SSH | 2222 | 22 | Acces SSH pour Git |
| Woodpecker Server | 9001 | 8000 | Serveur CI/CD |
| Woodpecker Agent | - | 3000 | Agent d'execution des pipelines |
| PostgreSQL | - | 5432 | Base de donnees Gitea |
| Consul | 8500 | 8500 | Service discovery et UI |
| Consul DNS | 8600 | 8600 | Resolution DNS des services |
| Registrator | - | - | Enregistrement automatique |
Reseau Docker
Tous les services utilisent le reseau Docker : gitgit_syoul_fr_gitea_net
- Sous-reseau :
172.18.0.0/16 - Gateway :
172.18.0.1
Volumes persistants
| Volume | Service | Chemin dans le conteneur |
|---|---|---|
gitgit_syoul_fr_gitea_data |
Gitea | /data |
gitgit_syoul_fr_db_data |
PostgreSQL | /var/lib/postgresql/data |
woodpecker-data |
Woodpecker Server | /var/lib/woodpecker |
consul-data |
Consul | /consul/data |
Flux de communication
Authentification OAuth2 (Woodpecker <-> Gitea)
- Utilisateur accede a
ci.syoul.fr - Woodpecker redirige vers
git.syoul.fr/login/oauth/authorize - Utilisateur s'authentifie sur Gitea
- Gitea redirige vers
ci.syoul.fr/authorizeavec le code - Woodpecker echange le code contre un token via
gitea:3000
Communication interne (avec Consul)
- Registrator detecte les nouveaux conteneurs
- Registrator enregistre les services dans Consul
- Les services peuvent se trouver via DNS Consul :
gitea.service.consul
Webhooks CI/CD
- Commit sur Gitea
- Gitea envoie un webhook a Woodpecker
- Woodpecker Server planifie le build
- Woodpecker Agent execute le pipeline
- Resultats affiches dans Gitea et Woodpecker
URLs d'acces
| Service | URL |
|---|---|
| Gitea | http://git.syoul.fr |
| Woodpecker | https://ci.syoul.fr |
| Consul UI | http://[serveur]:8500 |