Zum Hauptinhalt springen

Chilly Willy Agent: privater Woodpecker-Runner auf Hetzner Cloud

Inhaltsverzeichnis

Codeberg bietet zwar Woodpecker-CI an, aber die öffentlichen Runner sind verständlicherweise eingeschränkt - in puncto Laufzeit, parallelen Jobs und vor allem im Umgang mit Secrets. Wer regelmäßig größere Builds oder Deployments laufen lässt, kommt um einen eigenen Agent kaum herum. Genau dafür gibt es jetzt Chilly Willy Agent.

Was es macht
#

Chilly Willy Agent provisioniert einen privaten Woodpecker-Runner auf Hetzner Cloud , registriert ihn an einer Woodpecker-Instanz (z. B. der von Codeberg) und kümmert sich um den Lebenszyklus drumherum.

  • IPv6-only by default: der Runner bekommt keine IPv4-Adresse; ausgehender IPv4-Traffic läuft über NAT66, optional via DNS64 auch zu reinen IPv4-Upstreams. Spart eine IPv4 (und damit Geld) und verkleinert die Angriffsfläche.
  • Fedora CoreOS + Podman: minimales, transaktional aktualisiertes Host-OS, Container-Runtime ohne Daemon. Updates per rpm-ostree, Container-Workloads in rootless Podman.
  • CLI plus Make-Targets: ./chilly-willy-agent-Wrapper für die typischen Aktionen (up, down, status, …), alternativ make-Targets - beides spricht direkt mit der Hetzner Cloud API über curl. Keine Terraform-/Ansible-Abhängigkeiten.
  • Image-Pin Enforcement: das verwendete Woodpecker-Agent-Image wird per Digest gepinnt, der gepinnte Stand ist Teil des Repos. Damit lässt sich nichts unbemerkt unter dem Runner austauschen.
  • Optionale Firewall, Multi-Agent-Setup: mehrere Runner parallel auf demselben oder mehreren Hosts, optional mit Hetzner-Firewall davor.

Wofür gedacht
#

Primär für Codeberg CI , funktioniert aber gegen jede Woodpecker-Instanz, an der man einen Runner registrieren darf. Typische Anwendungsfälle:

  • Builds mit längerer Laufzeit, die das öffentliche Codeberg-Limit reißen
  • Pipelines mit Secrets, die nicht über fremde Runner laufen sollen
  • Deployments aus der Pipeline gegen private Infrastruktur (siehe auch der Deployment-Artikel zu dieser Seite )

Lizenz
#

Apache 2.0. Beiträge, Issues und Forks willkommen.

Verwendete Projekte
#


Hat dir das hier geholfen?
Unterstütze gerne via: