Workflow

Workflow für diesen Blog

Da ich ganz gerne Blog schreibe, finde ich es sehr schade, dass ich oft nicht die Motivation finde, hier mehr zu veröffentlichen, neben offensichtlichen Problemen wie Zeitmangel habe ich immer das Problem gehabt, dass die Art und Weise, wie ich diesen Blog veröffentliche, zu aufwendig ist.

  1. Commiten und Pushen

  2. Auf den Server gehen, auf den die Domain zeigt

  3. In den richtigen Container hüpfen

  4. Mit Hugo die Website bauen

  5. Alles an den Richtigen Ort verschieben

Einige der Schritte lassen sich mit Scripten vereinfachen. Aber auch wegen des Netzwerk-Setups längst nicht alles.

Was will ich?

Ich möchte gerne weiterhin Markdown verwenden, um zu schreiben, einfach, weil ich mich nicht mit irgendwelchen WYSIWYG-Editoren rumägern will und ich diese Auszeichnungssprache sehr gern mag.

An dieser Stelle gibt es sicher einige Möglichkeiten. Die wohl bekannteste ist WordPress, zum Beispiel mit dem Editor.md Plugin, oder auch das CMS Grav, was ich persönlich sehr cool finde. Aber das bringt mich zum nächsten Punkt: Ich will das alles so einfach wie möglich halten, also keinen Datenbank-Server, am liebsten auch keinen Interpreter und keinen Login.

Darüber hinaus finde ich es wirklich praktisch, die Seite mit Git verwalten zu können, jederzeit auf einen bestimmten Commit zurückgehen zu können, doch auch Branches sind für mich etwas sehr Praktisches.

Im Endeffekt will ich bei einem Static-Page-Generator wie Hugo bleiben.

Wie eingangs erwähnt, ist es mir zu aufwendig, immer, wenn ich einen kleinen Blog-Eintrag fertig habe, auf irgendwelchen Servern, Scripte anzustoßen und zu hoffen, dass ich nichts vergessen habe. Das soll am besten komplett wegfallen.

Was gibt es für Möglichkeiten?

Ich habe an verschiedene Tools gedacht: ich könnte mir git, hooks einrichten, die für mich die Scripte in dem entsprechenden Container ausführen. Das ist mir allerdings zu fragil, wenn ich den Blog irgendwann umziehe, muss ich auch die Scripte anpassen. Eine andere Möglichkeit wäre es, das Ganze mit Gitlab oder Github Pages zu lösen. Ich will allerdings nicht bei Github oder GitLab hosten, wenn ich sowieso schon Geld für Server ausgebe. Und eigens dafür Worker für meine eigene Gitlab Instanz einzurichten, kommt mir dann auch etwas zu viel vor.

Darüber hinaus gibt es noch eine ganze Reihe von weiteren Möglichkeiten, die sich hier finden: Hosting & Deployment | Hugo

Eine weitere Möglichkeit besteht darin, nach dem Pushen das Updaten des Blogs mit Ansible vorzunehmen.

Es soll was Eigenes werden

Letztlich habe ich mich dazu entschieden, die Webhooks von GitLab für mich zu nutzen. Dieses Feature gibt mir die Möglichkeit, einen HTTP-Endpoint aufzurufen, wenn bestimmte Aktionen innerhalb eines Repositories ausgeführt wurden. Für meinen Anwendungsfall ist es erst mal wichtig zu erfahren, dass etwas in den Main Branch meines Projektes gepusht wurde.

Diese Hook ruft anschließend einen Service von mir auf, der mir das Aktualisieren der Seite abnimmt. So habe ich keinen Stress dran zu denken, nach dem Pushen ein anderes Stück Software auszuführen. Es passiert einfach von allein. 🎉

Aktuell will ich noch davon absehen, den Code zu veröffentlichen, da dieser auf einem Framework basiert, an dem ich mitarbeite, welches aktuell allerdings noch nicht öffentlich verfügbar ist.

Was noch fehlt..

  • Da ich ganz gerne andere noch mal drüber lesen lassen möchte, bevor ich etwas veröffentliche, will ich eine Art Staging Seite, die eine Vorveröffentlichung des nächsten Builds bereitstellt.

  • Außerdem möchte ich benachrichtigt werden, wenn etwas bei der Aktualisierung schief gelaufen ist.