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.yml ist 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:

  1. Pipeline umbenennen: .drone.yml.woodpecker.yml
  2. Optionaler Syntax-Upgrade: pipeline:steps: (neue bevorzugte Syntax)
  3. Plugins prüfen: Die meisten Drone-Plugins laufen 1:1 in Woodpecker
  4. Secrets neu anlegen: Secrets müssen im Woodpecker-UI neu erfasst werden
  5. 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

Verwandte Technologien im Techradar