# 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 ```