Initial commit: Infrastructure Git CI/CD avec Gitea, Woodpecker, PostgreSQL, Consul et Registrator
This commit is contained in:
209
docs/04-configuration-woodpecker.md
Normal file
209
docs/04-configuration-woodpecker.md
Normal 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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user