« Logbuch Übersicht

Codeberg + Woodpecker CI = Automated Deployment

Veröffentlicht am:

Nachdem ich kürzlich all meine Git Repositories nach Codeberg umgezogen habe und mein Konto eingerichtet habe, funktioniert jetzt auch das automatische Deployment über Woodpecker CI.

Woodpecker CI - Continuous Integration platform

Woodpecker ist ein Clone von drone.io und damit ein zuverlässiges Tool mit der Software automatisch getestet, kompiliert und verteilt werden kann. Zudem besteht die Möglichkeiten Abhängigen automatisch testen zu lassen, in dem bestimmte Erweiterungen automatisch im Hintergrund von Woodpecker installiert werden.

Das ganze lässt sich auf jedem beliebigen Server installieren und ist vor allem in Verbindung mit Gitea (ein eigener Git Server) ein absolut geniales Tool!

Wie setze ich Woodpecker ein?

In erster Linie verwende ich die Continuous Integration Plattform für das automatische Aktualisieren meiner Websites ein. Das auto deployment über Woodpecker CI ist recht unkompliziert. Benötigt wird in dem Projekt Git Repository eine Datei namens woodpecker.yml. In dieser Datei wird das Regelwerk aufgestellt.

Meine woodpecker.yml

pipeline:
  zola:
    image: alpine:edge
    commands:
      - apk add zola --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/
      - zola build
  publish:
    image: drillster/drone-rsync
    hosts:
      from_secret: host
    port:
      from_secret: port
    user:
      from_secret: user
    key:
      from_secret: sshkey
    source: ./public/*
    target: /var/www/nokes.de/public/

Danke an yarmo für die Vorlage!

Schritt 1: zola

Im ersten Schritt wird Zola auf dem CI Server herunter geladen, damit der Static Site Generator zur Verfügung steht. Nachdem zola geladen wurde, wird diese Website über den Befehl zola build aus den Repository Daten gebaut. (Nähere Informationen was Zola ist und wie das funktioniert findet ihr in der Dokumentation.)

Auf dem CI Server liegt jetzt die generierte Website.

Schritt 2: publish

Nach dem Generieren der Website-Dateien müssen die neuen Dateien nur noch auf den richtigen Server kopiert werden. Über das woodpecker Plugin drillster/drone-rsync werden die Dateien anschließend per rsync auf den Server kopiert.

Damit sich der woodpecker Server mit meinem Server verbinden kann, werden zuerst die Verbindungsdaten aus der woodpecker.yml ausgelesen. Die Verbindungsdaten sind in Woodpecker CI hinterlegt und werden über die from_secret Variable angegeben.

Zusammengefasst: Das woodpecker Plugin drillster/drone-rsync verbindet sich mit meinem Server über die hinterlegten Verbindungsdaten mit meinem Server und kopiert die generierten Dateien an den Zielort (target).


« Logbuch Übersicht