Wechsel auf HUGO (Teil 2)
Veröffentlicht am von Philipp Weyer in Querbeet
So, nachdem nun einige Zeit ins Land gegangen ist, gibt es heute mal ein Update zur Umstellung des Systems für diese Seite. Ich habe nach einer Möglichkeit gesucht, die Veröffentlichung eines neuen Artikels so weit wie möglich zu automatisieren — und bin fündig geworden!
Die Ausgangssituation
- Auf meiner DiskStation (DS415+) läuft mein eigener Git-Server.
- Auf meinem Windows-System läuft Git.
- Dort liegt ein bare-repo mit den Inhalten der Seite (die Ordner
content
,static
undthemes
zusammen mit derconfig.toml
). - Neue Artikel werden in einem lokalen Repo erstellt mit
hugo new post/TITEL.md
. - Das Hosting-Angebot ist mittels FTP erreichbar.
Installiert Go für Windows und ruft einfach der Reihe nach die gegebenen Befehle auf – achtet auf die richtige Kommandozeile und ein sinnvoll gewähltes Verzeichnis, aus dem ihr aufruft!
Für eine sehr ausführliche Einleitung in die Versionskontrolle mit Git empfehle ich euch die (englischen) Tutorials von atlassian.com, mir haben sie geholfen!
Was ich getan habe
Das Ziel ist schnell umrissen: Mit dem git push origin master
aus dem lokalen Repo soll die Seitenaktualisierung ohne weitere Befehle ablaufen. Was ist dafür nötig?
- Go für Windows installieren
- Hugo für Windows neu bauen aus der Quelle
- Go davon überzeugen, auch unter Linux lauffähige Dateien zu erzeugen
- Hugo für Linux neu bauen aus der Quelle (unter Windows)
- Anpassungen auf der DiskStation
- Automatisierung mit dem
post-receive
-Hook
Go für Windows
Auf der Download-Seite von Golang die aktuelle Version des Windows-Installationspakets (aktuell go1.6.2.windows-amd64.msi
) herunterladen und installieren (Standardeinstellungen beibehalten!). Sollte eine frühere Installation vorhanden sein, vorher entfernen über „Programme hinzufügen oder entfernen“ im Startmenü.
Nach erfolgreichem Absolvieren des Assistenten, sollte noch der Ordner C:\GoPath angelegt werden. Anschließend sind noch die Umgebungsvariablen anzupassen. Unter „System“ in der Systemsteuerung die „Erweiterten Systemeinstellungen“ aufrufen, dann unter „Umgebungsvariablen…“ neue Systemvariablen anlegen:
- Variable:
GOPATH
, Wert:C:\GoPath
- Variable:
GO15VENDOREXPERIMENT
, Wert:1
Damit sollte Go voll funktionsfähig sein. Zum testen könnt ihr in einer neu geöffneten Kommandozeile go env
eingeben, wenn ihr etwas anderes seht als die Meldung, dass der Befehl go
unbekannt oder falsch geschrieben ist, soll das für den Moment mal ausreichen.
Hugo aus der Quelle aufbauen für Windows
Mit der eben installierten Umgebung ist es nun ein Kinderspiel, eine neue hugo.exe
mit dem aktuellen Entwicklungsstand zu generieren. Auf der Seite von spf13 steht noch einiges mehr dazu.
Das Ergebnis ist eine ausführbare Datei, zu finden unter C:\GoPath\bin\hugo.exe
. Damit ist nun für die lokale Entwicklung mit hugo server
die aktuelle Version fertig, ein kurzer Check mit hugo version
sollte ein „BuildDate“ liefern, dass der aktuellen Uhrzeit entspricht.
Go-Programme für Linux kompilieren (unter Windows)
Nun gibt es bestimmt irgendwie die Möglichkeit, die DiskStation davon zu überzeugen, Go-Programme zu kompilieren. Da das vorhandene Linux aber stark eingeschränkt ist, greifen wir auf die Möglichkeit zurück, auch unter Windows Dateien erzeugen zu können, die unter Linux lauffähig sind (Stichwort Cross-Compiling).
Dafür besorgen wir uns zunächst die aktuellen Quelldateien von Go, indem wir das entsprechende git-repo klonen und dann die Arbeitskopie auf den Stand der letzten als stabil gekennzeichneten Version bringen (hier go1.6.2). Anschließend wechseln wir in das src
-Verzeichnis und bauen mit Hilfe des schon installierten Go ein neues - das dann Dateien für Linux mit i386-Architektur bauen kann (also z. B. für die DS415+).
Zum Abschluss noch die notwendigen Tools nachinstallieren, die sonst den Bau von Hugo erfolgreich verhindern.
Hugo aus der Quelle aufbauen für Linux (unter Windows)
Wir sind so weit. Holen wir uns die aktuellen Quell-Dateien vom Hugo-Projekt mittels git clone
. Ordner wechseln, Abhängigkeiten einbringen und Hugo mit dem Hinweis des Zielsystems erneut kompilieren.
Das liefert nun eine unter Linux-i386 ausführbare Datei, zu finden unter LOCALREPOS\hugo\hugo
. Für die Windows-Nutzer: Die Datei hat keine Endung! Diese Datei an eine geeignete Stelle auf der DiskStation kopieren (darauf achten, dass der Ordner von den dort gesetzten Systemvariablen (path) erwischt werden oder ggf. noch hinzufügen. Der Aufruf von hugo version
auf der DiskStation sollte nun wiederum ein „BuildDate“ mit der aktuellen Uhrzeit liefern.
DiskStation: Funktionsumfang anpassen für Pygments
Wir gehen mal davon aus, dass über den Paketmanger in der Weboberfläche der DiskStation schon Python installiert wurde. Dann über SSH einloggen und mit folgenden Befehlen zuerst den Paketmanager pip
und damit dann Pygments
installieren.
Der erste Versuch pip
über die get-pip.py
zu installieren ist schief gegangen mit dem Fehler ValueError: invalid literal for int() with base 10: '20-2014'
. Die Recherche zu diesem Fehler brachte mich dann zu der funktionierenden Lösung oben.
Neben dieser notwendigen Erweiterung für hugo
ist es auch nötig, einen FTP-Client zu installieren, der über die Kommandozeile arbeitet. Die Wahl fiel wegen des großen Funktionsumfangs (wer weiß schon, was man mal noch damit machen möchte) auf lftp
. Installieren geht dank ipkg
sehr flott von der Hand: sudo ipkg install lftp
.
post-receive
-Hook anpassen
Der Pfad zu hugo
muss absolut angegeben werden, sonst wird der Befehl nicht gefunden (womit der Upload abbricht, sind ja keine Daten da!).
Zum weiterlesen die Quellen: