4.7 KiB
4.7 KiB
Configuration Woodpecker CI
Fichiers de configuration
woodpecker/docker-compose.yml: Configuration Docker Compose
Configuration actuelle
docker-compose.yml
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 :
steps:
build:
image: alpine:latest
commands:
- echo "Hello from Woodpecker!"
test:
image: alpine:latest
commands:
- echo "Running tests..."
Activer un depot
- Se connecter a Woodpecker (ci.syoul.fr)
- Cliquer sur "Add repository"
- Selectionner le depot Gitea
- Activer le depot
Woodpecker configure automatiquement le webhook dans Gitea.
Maintenance
Verifier les agents connectes
docker logs woodpecker-server | grep -i agent
Redemarrer les services
cd /opt/woodpecker
docker compose restart
Mettre a jour Woodpecker
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 :
-
Woodpecker ne peut pas joindre Gitea :
docker exec woodpecker-server wget -qO- http://gitea:3000/api/v1/version -
Client ID ou Secret incorrect :
- Verifier dans Gitea > Parametres > Applications
- Comparer avec
docker inspect woodpecker-server | grep CLIENT
-
URL de redirection incorrecte :
- Dans Gitea, verifier que l'URI de redirection est
https://ci.syoul.fr/authorize
- Dans Gitea, verifier que l'URI de redirection est
Agent non connecte
Symptome : Les builds restent en attente
Verification :
docker logs woodpecker-agent | grep -i error
Causes possibles :
-
WOODPECKER_AGENT_SECRET different :
- Verifier que le secret est identique sur le serveur et l'agent
-
Reseau Docker :
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 :
docker exec woodpecker-agent ls -la /var/run/docker.sock