Woodpecker CI vs. Drone CI: Lightweight CI/CD für Self-Hoster
Die Wahl des richtigen CI/CD-Tools ist entscheidend für DevOps-Teams, die ihre eigene Infrastruktur betreiben. Während Jenkins als Platzhirsch bekannt ist und GitHub Actions für viele der Standard ist, suchen Self-Hoster nach einer leichtgewichtigen Alternative, die einfach einzurichten, Docker-nativ und kostenlos ist. Zwei Kandidaten stechen heraus: Woodpecker CI und Drone CI — wobei Woodpecker ein direkter Fork von Drone ist. Dieser Artikel erklärt die Geschichte, die Unterschiede und hilft dir bei der richtigen Wahl.
Die Geschichte: Drone CI und der Community-Fork
Drone CI wurde 2012 von Brad Rydzewski gestartet und war eines der ersten CI/CD-Tools, das vollständig auf Docker-Containern basierte. Das Konzept war für die damalige Zeit revolutionär: Jeder Pipeline-Step läuft in einem eigenen Container — keine aufwendige Agent-Konfiguration, keine Abhängigkeitshölle auf dem CI-Server.
2019 übernahm Harness das Unternehmen hinter Drone. Mit der Übernahme wurden zunehmend Features hinter eine kommerzielle Lizenz verschoben. Die Community reagierte: Woodpecker CI wurde 2021 offiziell als eigenständiges Projekt gestartet, basierend auf dem letzten vollständig freien Drone-Stand (kurz vor dem Harness-Pivot).
Heute sind beide Projekte aktiv — aber mit sehr unterschiedlichen Ausrichtungen:
- Drone: Fokus auf kommerzielle Harness-Integration, Open-Source-Weiterentwicklung verlangsamt sich
- Woodpecker: Community-getrieben, MIT-Lizenz, aktive Feature-Entwicklung, Gitea/Forgejo als First-Class-SCMs
Was ist Woodpecker CI?
Woodpecker CI ist ein modernes, container-natives CI/CD-System, das vollständig Open Source (MIT-Lizenz) ist. Das Projekt hat sich seit dem Fork deutlich von Drone entfernt und bringt eigene Features:
- Multi-SCM-Unterstützung: Gitea, Forgejo, GitHub, GitLab, Bitbucket, Bitbucket Data Center
- Docker- und Podman-Runner für Pipeline-Steps (Container-basiert)
- Kubernetes-Runner für skalierbares Workload-Scheduling im Cluster
- Local-Runner für native Ausführung ohne Container (für spezielle Builds)
- Secrets-Management mit Projekt- und Organisations-Scoped Secrets
- Plugin-Ökosystem: kompatibel mit Drone-Plugins + eigene Woodpecker-Plugins
- Multi-Workflow-Support: mehrere YAML-Dateien pro Repository möglich
- Cron-Schedules direkt in der UI konfigurierbar
- Modernes Web-UI mit reaktivem Frontend (Vue 3)
- Matrix-Builds: Parametrisierte Pipeline-Runs für Cross-Platform-Tests
Woodpecker hat eine aktive Community, regelmäßige Releases und ist besonders gut mit Gitea/Forgejo integriert — dem bevorzugten SCM für viele Self-Hoster im deutschsprachigen Raum.
Was ist Drone CI?
Drone CI (jetzt unter Harness) existiert weiter in zwei Editionen:
- Drone Open Source (Community Edition): das Original-Projekt, unter Apache-2.0-Lizenz
- Drone Enterprise: kommerzielle Edition mit zusätzlichen Features
Die Open-Source-Edition bekommt noch Sicherheitsupdates und gelegentliche Bugfixes, aber die Feature-Weiterentwicklungsgeschwindigkeit hat merklich nachgelassen. Neue Features erscheinen primär in der Enterprise-Edition.
Drone-Stärken:
- Etabliertes Ökosystem: Tausende Drone-Plugins verfügbar und gut dokumentiert
- Bewährtes Pipeline-Format:
.drone.ymlist weit verbreitet, von vielen Tools direkt unterstützt - Performance: Schlanker Go-Stack, niedriger Ressourcenverbrauch auf dem CI-Server
- Harness-Integration: Wer ohnehin auf Harness als CD-Plattform setzt, profitiert von nativer Integration
Feature-Vergleich: Woodpecker vs. Drone
| Feature | Woodpecker CI | Drone CI (OSS) |
|---|---|---|
| Lizenz | MIT | Apache 2.0 |
| Aktive Entwicklung | ✅ Sehr aktiv | ⚠️ Verlangsamend |
| Gitea/Forgejo | ✅ First-Class | ⚠️ Basis-Support |
| GitHub | ✅ | ✅ |
| GitLab | ✅ | ✅ |
| Docker-Runner | ✅ | ✅ |
| Kubernetes-Runner | ✅ | ✅ |
| Local-Runner | ✅ | ✅ |
| Multi-Workflow (mehrere YAMLs) | ✅ | ❌ |
| Matrix-Builds | ✅ | ✅ |
| Drone-Plugin-Kompatibilität | ✅ Weitgehend | ✅ Nativ |
| Cron-Jobs via UI | ✅ | ✅ |
| Modernes UI | ✅ Vue 3 | ⚠️ Älteres UI |
| HA/Enterprise-Features | ⚠️ In Entwicklung | 💰 Kostenpflichtig |
Installation: Woodpecker CI mit Gitea
Docker Compose Setup
version: '3'
services:
woodpecker-server:
image: woodpeckerci/woodpecker-server:latest
ports:
- "8000:8000"
volumes:
- woodpecker-server-data:/var/lib/woodpecker/
environment:
- WOODPECKER_OPEN=false
- WOODPECKER_HOST=https://ci.example.com
- WOODPECKER_GITEA=true
- WOODPECKER_GITEA_URL=https://gitea.example.com
- WOODPECKER_GITEA_CLIENT=${GITEA_CLIENT}
- WOODPECKER_GITEA_SECRET=${GITEA_SECRET}
- WOODPECKER_AGENT_SECRET=${AGENT_SECRET}
- WOODPECKER_DATABASE_DRIVER=sqlite3
woodpecker-agent:
image: woodpeckerci/woodpecker-agent:latest
command: agent
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WOODPECKER_SERVER=woodpecker-server:9000
- WOODPECKER_AGENT_SECRET=${AGENT_SECRET}
depends_on:
- woodpecker-server
volumes:
woodpecker-server-data:
Erste Pipeline konfigurieren
Eine .woodpecker.yml im Repository für eine Go-Anwendung:
steps:
- name: test
image: golang:1.22
commands:
- go test ./...
- name: build
image: golang:1.22
commands:
- go build -o myapp .
when:
branch: main
- name: docker-push
image: plugins/docker
settings:
repo: harbor.example.com/myproject/myapp
tags: latest,${CI_COMMIT_SHA}
username:
from_secret: registry_username
password:
from_secret: registry_password
when:
branch: main
event: push
Installation: Drone CI
version: '3'
services:
drone-server:
image: drone/drone:2
ports:
- "8080:80"
volumes:
- drone-data:/data
environment:
- DRONE_GITEA_SERVER=https://gitea.example.com
- DRONE_GITEA_CLIENT_ID=${CLIENT_ID}
- DRONE_GITEA_CLIENT_SECRET=${CLIENT_SECRET}
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_SERVER_HOST=drone.example.com
- DRONE_SERVER_PROTO=https
- DRONE_DATABASE_DRIVER=sqlite3
drone-runner:
image: drone/drone-runner-docker:1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=https
- DRONE_RPC_HOST=drone.example.com
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_RUNNER_CAPACITY=2
volumes:
drone-data:
Pipeline-Syntax: Unterschiede im Detail
Woodpecker hat die Drone-Syntax als Basis genommen, aber eigenständig weiterentwickelt. Neue Woodpecker-Projekte sollten die neue Syntax nutzen:
| Aspekt | Drone YAML | Woodpecker YAML |
|---|---|---|
| Top-Level-Key | pipeline: (alt) |
steps: (empfohlen) |
| Dateiname | .drone.yml |
.woodpecker.yml |
| Mehrere Pipelines | ❌ Nur eine Datei | ✅ .woodpecker/*.yml |
| Konditionale | when: |
when: (erweitert) |
| Plugins | settings: |
settings: |
Die meisten Drone-Pipelines laufen in Woodpecker ohne Änderungen — nur der Dateiname muss angepasst werden.
Migration von Drone zu Woodpecker
Da Woodpecker aus Drone geforkt wurde, ist eine Migration meist unkompliziert:
- Pipeline umbenennen:
.drone.yml→.woodpecker.yml - Optionaler Syntax-Upgrade:
pipeline:→steps:(neue bevorzugte Syntax) - Plugins prüfen: Die meisten Drone-Plugins laufen 1:1 in Woodpecker
- Secrets neu anlegen: Secrets müssen im Woodpecker-UI neu erfasst werden
- OAuth-App neu einrichten: In Gitea/GitHub eine neue OAuth-App für Woodpecker anlegen
Bestehende Repositories lassen sich mit wenig Aufwand übertragen. Die offizielle Woodpecker-Dokumentation enthält eine detaillierte Migrationscheckliste.
Wann Woodpecker CI wählen?
Woodpecker ist die bessere Wahl, wenn:
- Gitea/Forgejo als SCM: Woodpecker hat die beste Integration für diese Self-Hosted-Git-Lösungen
- Langfristige FOSS-Strategie: MIT-Lizenz, Community-getrieben, kein kommerzieller Lock-in möglich
- Aktive Features gewünscht: Multi-Workflow, verbesserter Kubernetes-Runner, modernes Vue-3-UI
- Neue Self-Hosting-Setups: Wer heute neu anfängt, sollte Woodpecker bevorzugen
- Gitea-natives Erlebnis: Woodpecker und Gitea passen im Self-Hosting-Ökosystem perfekt zusammen
Wann Drone CI wählen?
Drone bleibt sinnvoll, wenn:
- Harness-Integration: Der Stack nutzt bereits Harness für CD und Release-Management
- Enterprise-Features nötig: HA, Custom Secrets Backends, GitHub Enterprise Server Support
- Bestehende Drone-Setups: Wer Drone bereits produktiv betreibt und zufrieden ist, hat keinen dringenden Migrationsbedarf
- Etablierte Plugin-Abhängigkeiten: Spezielle Drone-Plugins, die noch keine Woodpecker-Entsprechung haben
- Keine Neuentwicklung: Harness investiert nicht in neue Open-Source-Features — wer Enterprise braucht, zahlt
Fazit: Woodpecker CI ist der natürliche Nachfolger
Für neue Self-Hosting-Setups ist Woodpecker CI heute die erste Wahl unter den Drone-kompatiblen CI/CD-Lösungen. Die MIT-Lizenz, die aktive Community, die Multi-Workflow-Unterstützung und die erstklassige Gitea/Forgejo-Integration machen es zur natürlichen Wahl im Self-Hosting-Ökosystem 2026.
Drone CI bleibt relevant für bestehende Enterprise-Setups und Teams mit Harness-Integration. Für neue Projekte ohne kommerziellen Harness-Kontext ist ein Wechsel zu Woodpecker jedoch dringend empfehlenswert — die Weiterentwicklung des OSS-Drone-Zweigs ist deutlich verlangsamt.
Beide Tools beweisen: Container-native, leichtgewichtige CI/CD muss nicht teuer oder komplex sein. Ein kleiner VPS oder ein Homelab-Server reicht für viele Self-Hosting-Setups vollkommen aus.
Weiterführende Artikel
- Gitea vs. Forgejo: Self-Hosted Git im Vergleich 2026
- GitHub Actions vs. GitLab CI/CD im Vergleich
- ArgoCD vs Flux CD: GitOps-Tools für Kubernetes