Files
infrastructure/docs/04-configuration-woodpecker.md

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

  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

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 :

  1. Woodpecker ne peut pas joindre Gitea :

    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 :

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 :

    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