100 lines
3.4 KiB
Markdown
100 lines
3.4 KiB
Markdown
# 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)
|
|
|
|
1. Utilisateur accede a `ci.syoul.fr`
|
|
2. Woodpecker redirige vers `git.syoul.fr/login/oauth/authorize`
|
|
3. Utilisateur s'authentifie sur Gitea
|
|
4. Gitea redirige vers `ci.syoul.fr/authorize` avec le code
|
|
5. Woodpecker echange le code contre un token via `gitea:3000`
|
|
|
|
### Communication interne (avec Consul)
|
|
|
|
1. Registrator detecte les nouveaux conteneurs
|
|
2. Registrator enregistre les services dans Consul
|
|
3. Les services peuvent se trouver via DNS Consul : `gitea.service.consul`
|
|
|
|
### Webhooks CI/CD
|
|
|
|
1. Commit sur Gitea
|
|
2. Gitea envoie un webhook a Woodpecker
|
|
3. Woodpecker Server planifie le build
|
|
4. Woodpecker Agent execute le pipeline
|
|
5. 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 |
|
|
|