210 lines
4.7 KiB
Markdown
210 lines
4.7 KiB
Markdown
# 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
|
|
```
|
|
|