--- title: Woodpecker CI created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, ci-cd, pipeline, docker] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/woodpecker-ci/woodpecker] --- # đŸ’» Woodpecker CI > **Serveur CI/CD open source lĂ©ger**, fork communautaire de Drone CI. Orchestration de pipelines par conteneurs Docker, parfait pour l'auto-hĂ©bergement des projets Git. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [woodpecker-ci.org](https://woodpecker-ci.org/) | | **GitHub** | [woodpecker-ci/woodpecker](https://github.com/woodpecker-ci/woodpecker) | | **License** | Apache-2.0 | | **Langage** | Go | | **Étoiles GitHub** | 7 216 ⭐ | | **CatĂ©gorie** | [[cat-development\|Development]] | | **Note** | ⚠ **Fork de Drone CI**, créé en 2022 quand Drone a basculĂ© en licence propriĂ©taire. Woodpecker reste **100% open source** et **community-driven**. | ## 📝 Description **Woodpecker CI** est un **serveur d'intĂ©gration continue / dĂ©ploiement continu** inspirĂ© de Drone CI. Il exĂ©cute vos pipelines de build/test/deploy dans des **conteneurs Docker Ă©phĂ©mĂšres**, configurĂ©s via un fichier `.woodpecker.yaml` Ă  la racine du repo. **Origines** : - **Drone CI** (fondateur : Brad Rydzewski) est devenu **propriĂ©taire en 2022** (entreprise Harness) - **Woodpecker** est un **fork** créé par la communautĂ© pour conserver un CI/CD **libre et auto-hĂ©bergeable** - MĂȘmes concepts (`.drone.yml` ↔ `.woodpecker.yml`), **drop-in replacement** possible **CaractĂ©ristiques** : - **Multi-agents** : distribuer la charge sur plusieurs runners - **Multi-forges** : [[app-gitea]], [[app-forgejo]], GitLab, GitHub, Bitbucket, Gogs - **Multi-OS** : agents Linux, Windows, macOS, ARM (Raspberry Pi) - **Plugins** : un plugin est juste une image Docker, ecosystem infini - **Secrets** chiffrĂ©s au repos - **UI web** : visualiser les builds, logs en temps rĂ©el - **Cron jobs** : pipelines planifiĂ©s - **Webhooks** : dĂ©clenchement sur push, tag, PR, release - **Prometheus metrics** **Cas d'usage** : - Auto-hĂ©berger ses pipelines pour des projets GitLab/Forgejo - CI/CD pour projets open source (gratuit Ă  l'infini) - Build d'images Docker multi-arch - DĂ©ploiement automatique sur cluster Kubernetes, VPS **DiffĂ©rence avec GitLab CI / Gitea Actions** : Woodpecker est **lĂ©ger, dĂ©diĂ© CI/CD** (pas une forge complĂšte) et **repose uniquement sur Docker** (pas de runners shell complexes). ## 🚀 Installation ### Via Docker Compose (serveur + agent) ```yaml # docker-compose.yml version: '3.8' services: woodpecker-server: image: woodpeckerci/woodpecker-server:latest container_name: woodpecker-server restart: unless-stopped ports: - "8000:8000" environment: - WOODPECKER_OPEN=true - WOODPECKER_HOST=https://ci.example.com - WOODPECKER_GITEA=true - WOODPECKER_GITEA_URL=https://gitea.example.com - WOODPECKER_GITEA_CLIENT=*** - WOODPECKER_GITEA_SECRET=*** - WOODPECKER_AGENT_SECRET=*** - WOODPECKER_ADMIN=velli volumes: - woodpecker-data:/var/lib/woodpecker labels: - "traefik.enable=true" - "traefik.http.routers.woodpecker.rule=Host(`ci.example.com`)" - "traefik.http.routers.woodpecker.entrypoints=websecure" - "traefik.http.services.woodpecker.loadbalancer.server.port=8000" networks: - proxy woodpecker-agent: image: woodpeckerci/woodpecker-agent:latest container_name: woodpecker-agent restart: unless-stopped environment: - WOODPECKER_SERVER=woodpecker-server:9000 - WOODPECKER_AGENT_SECRET=*** - WOODPECKER_MAX_WORKFLOWS=4 depends_on: - woodpecker-server volumes: - /var/run/docker.sock:/var/run/docker.sock networks: - proxy volumes: woodpecker-data: networks: proxy: external: true ``` ### Exemple de pipeline `.woodpecker.yaml` ```yaml # .woodpecker.yaml when: event: [push, pull_request] steps: build: image: node:20 commands: - npm ci - npm run build - npm test docker: image: plugins/docker settings: repo: velli/mon-app tags: latest username: from_secret: docker_username password: from_secret: docker_password ``` ## ⚙ Configuration 1. **OAuth2** avec la forge (Gitea, Forgejo, GitHub, GitLab) 2. **Repos activĂ©s** : par repo, autoriser l'accĂšs Ă  Woodpecker 3. **Secrets** : variables chiffrĂ©es (par repo ou globales) 4. **Agents** : scaler horizontalement (ajouter des agents) 5. **RBAC** : `admin` (peut tout), `user` (ses repos) 6. **Limites** : `WOODPECKER_MAX_WORKFLOWS=2` par agent (selon vos ressources) ## 🔗 Alternatives - **[[app-gitlab]]** — Forge complĂšte avec CI intĂ©grĂ© (plus lourd) - **[[app-gitea]] / [[app-forgejo]] + Gitea Actions** — IntĂ©grĂ©, plus simple - **Drone CI** — Fork originel, dĂ©sormais **propriĂ©taire** - **Jenkins** — RĂ©fĂ©rence historique, trĂšs complexe - **Gitea/Forgejo Actions** — Suffisant pour beaucoup, natif - **Argo Workflows** — Pour Kubernetes natif - **Concourse CI** — Pipelines dĂ©claratifs YAML, mais moins populaire ## 🔒 SĂ©curitĂ© - **OAuth via la forge** : pas de mot de passe Ă  gĂ©rer - **Secrets chiffrĂ©s** au repos (clĂ© AES stockĂ©e sur le serveur) - **Agents isolĂ©s** : un build malicieux ne touche que son conteneur - **Volumes read-only** sur les agents pour limiter les fuites - **HTTPS obligatoire** (reverse proxy) - **Log audit** : qui a dĂ©clenchĂ© quel build, depuis quelle IP ## 📚 Ressources - [Documentation officielle](https://woodpecker-ci.org/docs/intro) - [GitHub woodpecker-ci/woodpecker](https://github.com/woodpecker-ci/woodpecker) - [Migration depuis Drone CI](https://woodpecker-ci.org/docs/migrations) - [Marketplace de plugins](https://woodpecker-ci.org/plugins) ## 🔗 Pages LiĂ©es - [[cat-development]] — CatĂ©gorie Development - [[app-forgejo]] / [[app-gitea]] — Forges supportĂ©es - [[app-gitlab]] — Concurrent + alternative - [[app-traefik]] — Reverse proxy - [[securisation-home-lab]] — Bonnes pratiques - [[recettes-docker-compose]] — Templates Docker