Initial commit: Infrastructure Git CI/CD avec Gitea, Woodpecker, PostgreSQL, Consul et Registrator

This commit is contained in:
2025-12-23 20:11:09 +01:00
commit de02fb28ca
20 changed files with 2685 additions and 0 deletions

View File

@ -0,0 +1,209 @@
# Configuration Woodpecker CI
## Fichiers de configuration
- `woodpecker/docker-compose.yml` : Configuration Docker Compose
## Configuration actuelle
### docker-compose.yml
```yaml
services:
woodpecker-server:
image: woodpeckerci/woodpecker-server:latest
container_name: woodpecker-server
restart: unless-stopped
ports:
- "9001:8000"
environment:
WOODPECKER_GITEA: "true"
WOODPECKER_GITEA_URL: "http://gitea:3000"
WOODPECKER_GITEA_CLIENT: "77390faa-e609-4f00-846b-955aab74095e"
WOODPECKER_GITEA_SECRET: "***"
WOODPECKER_AGENT_SECRET: "***"
WOODPECKER_ADMIN: "syoul"
WOODPECKER_HOST: "https://ci.syoul.fr"
volumes:
- woodpecker-data:/var/lib/woodpecker
networks:
- gitea_net
woodpecker-agent:
image: woodpeckerci/woodpecker-agent:latest
container_name: woodpecker-agent
restart: unless-stopped
depends_on:
- woodpecker-server
environment:
WOODPECKER_SERVER: "woodpecker-server:9000"
WOODPECKER_AGENT_SECRET: "***"
WOODPECKER_HEALTHCHECK_ADDR: ":3001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- gitea_net
volumes:
woodpecker-data:
networks:
gitea_net:
external: true
name: gitgit_syoul_fr_gitea_net
```
## Variables d'environnement
### Woodpecker Server
| Variable | Description |
|----------|-------------|
| `WOODPECKER_GITEA` | Active l'integration Gitea |
| `WOODPECKER_GITEA_URL` | URL interne de Gitea (via Docker network) |
| `WOODPECKER_GITEA_CLIENT` | Client ID de l'application OAuth2 |
| `WOODPECKER_GITEA_SECRET` | Client Secret de l'application OAuth2 |
| `WOODPECKER_AGENT_SECRET` | Secret partage avec les agents |
| `WOODPECKER_ADMIN` | Utilisateur administrateur |
| `WOODPECKER_HOST` | URL publique de Woodpecker |
### Woodpecker Agent
| Variable | Description |
|----------|-------------|
| `WOODPECKER_SERVER` | Adresse du serveur (via Docker network) |
| `WOODPECKER_AGENT_SECRET` | Secret partage avec le serveur |
| `WOODPECKER_HEALTHCHECK_ADDR` | Adresse du healthcheck |
## URLs importantes
- **WOODPECKER_GITEA_URL** : `http://gitea:3000`
- URL interne via le reseau Docker
- Permet a Woodpecker de communiquer avec Gitea pour l'API
- **WOODPECKER_HOST** : `https://ci.syoul.fr`
- URL publique pour les redirections OAuth2
- Utilisee pour les callbacks
## Flux OAuth2
```
Navigateur -> ci.syoul.fr/login
|
v
Woodpecker -> Redirect vers git.syoul.fr/login/oauth/authorize
|
v
Utilisateur s'authentifie sur Gitea
|
v
Gitea -> Redirect vers ci.syoul.fr/authorize?code=XXX
|
v
Woodpecker -> POST http://gitea:3000/login/oauth/access_token
| (echange du code contre un token)
v
Utilisateur connecte sur Woodpecker
```
## Configuration des pipelines
### Fichier .woodpecker.yml
Creer un fichier `.woodpecker.yml` a la racine du depot :
```yaml
steps:
build:
image: alpine:latest
commands:
- echo "Hello from Woodpecker!"
test:
image: alpine:latest
commands:
- echo "Running tests..."
```
### Activer un depot
1. Se connecter a Woodpecker (ci.syoul.fr)
2. Cliquer sur "Add repository"
3. Selectionner le depot Gitea
4. Activer le depot
Woodpecker configure automatiquement le webhook dans Gitea.
## Maintenance
### Verifier les agents connectes
```bash
docker logs woodpecker-server | grep -i agent
```
### Redemarrer les services
```bash
cd /opt/woodpecker
docker compose restart
```
### Mettre a jour Woodpecker
```bash
cd /opt/woodpecker
docker compose pull
docker compose up -d
```
## Depannage
### Erreur OAuth2
**Symptome** : "Erreur lors de l'authentification aupres du fournisseur OAuth"
**Causes possibles** :
1. **Woodpecker ne peut pas joindre Gitea** :
```bash
docker exec woodpecker-server wget -qO- http://gitea:3000/api/v1/version
```
2. **Client ID ou Secret incorrect** :
- Verifier dans Gitea > Parametres > Applications
- Comparer avec `docker inspect woodpecker-server | grep CLIENT`
3. **URL de redirection incorrecte** :
- Dans Gitea, verifier que l'URI de redirection est `https://ci.syoul.fr/authorize`
### Agent non connecte
**Symptome** : Les builds restent en attente
**Verification** :
```bash
docker logs woodpecker-agent | grep -i error
```
**Causes possibles** :
1. **WOODPECKER_AGENT_SECRET different** :
- Verifier que le secret est identique sur le serveur et l'agent
2. **Reseau Docker** :
```bash
docker exec woodpecker-agent ping -c 2 woodpecker-server
```
### Builds echouent avec erreur Docker
**Symptome** : "Cannot connect to Docker daemon"
**Solution** : Verifier le montage du socket Docker :
```bash
docker exec woodpecker-agent ls -la /var/run/docker.sock
```