An dieser Stelle wird beschrieben, wie die Entwicklungsumgebung und Tools für die Dokumentation eingerichtet werden.
Der Static Site Generator Hugo (https://gohugo.io/) bildet seit April 2019 die technische Basis für die MyCoRe-Dokumentation. Die Software ist in Go programmiert und steht für die gängigen Betriebssysteme als Download bereit.
Wir verwenden Hugo (Version: 0.89.0 ) in der Extended Edition, vor allem da diese das CSS-Framework Sass unterstützt.
Der Download erfolgt direkt von der Hugo-GitHub-Seite. Windows-Nutzer verwenden hugo_extended_0.89.0_Windows-64bit.zip.
Die Zip-Datei enthält das komplette Hugo-Programm, welches aus nur einer Datei besteht. Diese kann an einem beliebigen Ort auf dem PC abgelegt werden (z.B. C:\Programme). Anschließend muss der Ordner noch in der Umgebungsvariable Path bekannt gemacht werden. Eine detailierte Installationsanleitung findet man in der Hugo Dokumentation Install Hugo.
Die Dokumentation wird in dem MyCoRe-Git-Repository MyCoRe-Org/mycore-website gepflegt. Commits dürfen ohne Pull-Requests direkt in den master-Branch erfolgen.
cd \workspaces\mycore-website\git
git clone https://github.com/MyCoRe-Org/mycore-website
Wir haben uns dafür entschieden, externe CSS- und Javascript-Frameworks (wie Bootstrap) nicht über das Git-Repository auszuliefern. Diese werden via Maven als Webjars heruntergeladen und in den Dokumentations-Source-Code integriert. Deshalb muss zuvor Maven gemäß der Anleitung "Installing Apache Maven" eingerichtet werden.
Werden die Hugo-Dokumentations-Umgebung neu eingerichtet oder die betreffenden Bibliotheken aktualisiert, muss einmalig in dem Ordner, in den das MyCoRe-Dokumentations-Projekt ausgecheckt wurde, das folgende Maven-Kommando aufgerufen werden:
cd \workspaces\mycore-website\git\mycore-website
$ mvn clean compile
Hugo unterstützt die Webseiten-Entwicklung mit einem lokalen Server mit Live-Reload. Das bedeutet, das Änderungen am Quellcode direkt im Browser betrachtet werden können
cd \workspaces\mycore-website\git\mycore-website\mycore.org
$ hugo server
Die MyCoRe-Dokumentation kann nun lokal unter folgender Adresse betrachtet werden: http://localhost:1313/
Die folgenden Informationen sind nur für die Installation auf einem Server relevant.
Bei der Installation auf dem MyCoRe-Server wurde festgestellt, dass die in CentOS 7 verwendeten C-Bibliotheken zu alt sind ("libstdc++.so.6: version `GLIBCXX_3.4.21' not found"), um Hugo extended (mit Sass-Support) zu starten. Deshalb wird die normale Hugo-Version verwendet und SASS vorab per Maven-Plugin zu CSS kompiliert.
Die Installation muss einmalig durchgeführt werden, um die notwendigen Ordner und Tools zu konfigurieren. Danach reicht es, das Autodeploy-Skript aufzurufen.
Die Installation der Webseite auf dem Server umfasst die folgenden Schritte:
$ sudo adduser mycore
$ sudo mkdir -p /mcr/mycore.de/hugo/bin
$ cd /mcr/mycore.de/hugo/bin
$ sudo wget https://github.com/gohugoio/hugo/releases/download/v0.89.0/hugo_0.89.0_Linux-64bit.tar.gz
$ sudo tar -xzf hugo_0.89.0_Linux-64bit.tar.gz
$ sudo mkdir -p /mcr/mycore.de/hugo/mycore-website
$ sudo chown mycore /mcr/mycore.de/hugo/mycore-website
$ cd /mcr/mycore.de/hugo
$ sudo -u mycore git clone https://github.com/MyCoRe-Org/mycore-website
$ cd /mcr/mycore.de/hugo/mycore-website
$ sudo -u mycore mvn clean compile
$ cd mycore.org
$ sudo ../../bin/hugo -b https://www.mycore.de/ --cleanDestinationDir
$ sudo mv /mcr/mycore.de/hugo/mycore-website/mycore.org/public/* /var/www/mycore-website
Das Autodeploy Skript update-website.sh
prüft zunächst, ob Updates auf dem Git-Server commited wurden und lädt diese herunter.
Wenn das letzte Commmit weniger als 4 min alt ist, stoppt es, um auf weitere Commits zu warten.
Ist die Wartezeit abgelaufen, wird die Webseite mit Maven und Hugo gebaut und das Ergebnis in den Webordner kopiert.
Das Script kann direkt auf dem Server mit dem Parameter force
aufgerufen werden,
dann wird die Webseite sofort ohne Update-Check und Wartezeit neu gebaut und deployed.
$ sudo chmod +x /mcr/mycore.de/hugo/bin/update-mycore-website.sh
$ sudo crontab -e
# m h dom mon dow command
01,06,11,16,21,26,31,36,41,46,51,56 * * * * sudo -u mycore /mcr/mycore.de/hugo/bin/update-mycore-website.sh