Woodpecker CI — Simple Yet Powerful CI/CD Engine
Woodpecker is a lightweight, container-based CI/CD engine forked from Drone. Simple YAML pipelines, Docker-native execution, and multi-platform support.
What it is
Woodpecker CI is a lightweight, container-based CI/CD engine forked from Drone. Every pipeline step runs in an isolated Docker container, defined in a simple YAML file. It integrates with GitHub, GitLab, Gitea, Forgejo, and Bitbucket.
Woodpecker targets small to mid-size teams and self-hosters who want CI/CD without the complexity of Jenkins or the cost of GitHub Actions minutes.
How it saves time or tokens
Woodpecker pipelines are minimal YAML. A typical build-test-deploy pipeline is 20 lines. There is no plugin marketplace to navigate because any Docker image is a valid pipeline step. Need node:20? Use it directly. Need postgres:16 as a service? Add it as a service block.
Self-hosting Woodpecker on a $5/month VPS gives you unlimited build minutes, compared to GitHub Actions' 2,000 free minutes per month.
How to use
- Deploy Woodpecker server:
docker compose up -dwith the official compose file - Register your Git forge (GitHub, GitLab, Gitea) as an OAuth app
- Activate your repository in the Woodpecker UI
- Add a
.woodpecker.ymlfile to your repository root
Example
# .woodpecker.yml
steps:
- name: build
image: node:20-alpine
commands:
- npm ci
- npm run build
- name: test
image: node:20-alpine
commands:
- npm test
- name: deploy
image: alpine/curl
commands:
- curl -X POST https://deploy.example.com/webhook
when:
branch: main
event: push
services:
- name: database
image: postgres:16
environment:
POSTGRES_DB: test
POSTGRES_PASSWORD: test
Related on TokRepo
- DevOps tools -- CI/CD and infrastructure tools
- Automation tools -- Build automation and workflow tools
Common pitfalls
- Woodpecker uses
.woodpecker.ymlby default, not.drone.yml; migrating from Drone requires renaming and minor syntax adjustments - Agent-server communication requires proper networking; in Docker setups, ensure the agent can reach the server's gRPC port
- Secret management is per-repository in the UI; there is no global secret store without a plugin or external vault
Frequently Asked Questions
Woodpecker is a community fork of Drone created after Drone's acquisition by Harness. Woodpecker remains fully open source (Apache 2.0) and community-maintained. The pipeline syntax is largely compatible, but Woodpecker has diverged with its own plugin ecosystem and UI improvements.
Yes. Woodpecker supports a Kubernetes backend where pipeline steps run as Kubernetes pods instead of Docker containers. This is useful for teams already running Kubernetes clusters and wanting to reuse compute resources.
Yes. Steps without dependencies run in parallel by default. You can control execution order with the depends_on field. Matrix builds are also supported for running the same pipeline across multiple configurations.
Woodpecker integrates with GitHub, GitLab, Gitea, Forgejo, and Bitbucket. Each forge requires an OAuth application for authentication. Gitea and Forgejo are first-class integrations since many Woodpecker users are self-hosters.
Add secrets in the Woodpecker UI under your repository settings. Reference them in YAML using the secrets field on a step. Secrets are injected as environment variables and masked in logs.
Citations (3)
- Woodpecker GitHub— Woodpecker CI is a community fork of Drone CI
- Woodpecker Docs— Woodpecker supports GitHub, GitLab, Gitea, Forgejo, and Bitbucket
- Woodpecker Docs— Container-based CI/CD pipeline execution
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.