Bei der Erstellung der F-Droid-Website wird Jekyll und gitlab-ci verwendet. Die gesamte Website funktioniert nun durch Nutzung eines Standard-Git “fork”-Workflows, der völlig von GitLab unterhalten wird und von Diensten wie GitHub bestens bekannt ist. Alle Seiten und Informationen über Apps und Pakete, die von f-droid.org vertrieben werden, werden mithilfe unseres Plugins jekyll-fdroid erzeugt, das die Inhalte aus der f-droid.org Indexdatei bezieht.
Staging auf Entwicklungs-Forks
Alle Entwicklungs-Forks der fdroid-Website haben automatisch einen Staging-Server eingerichtet und werden von der gitlab-ci Konfiguration gepflegt. Dadurch wird der Inhalt des Branches master des Forks automatisch nach GitLab Pages verteilt. Zum Beispiel, nicoalt’s git Fork ist auf https://gitlab.com/nicoalt/fdroid-website und der master Branch davon wird automatisch auf https://nicoalt.gitlab.io/fdroid-website verteilt.
Staging der offiziellen Website
Wie bei Forks wird der master-Zweig des Haupt-Git-Repos für die Website, https://gitlab.com/fdroid/fdroid-website, automatisch nach https://fdroid.gitlab.io/fdroid-website deployed. Das ist der Ort, um den aktuellen Zustand der Website zu überprüfen, bevor man eine Veröffentlichung markiert.
Bereitstellung auf https://f-droid.org
Wenn ein Update der Website getestet wurde und bereit steht, erstellt ein Releasemanager ein PGP-signiertes Release-Tag im Haupt-Git-Repo. Der Deployment-Server überwacht das Haupt-Git-Repo auf neue Tags. Wenn er ein neues Tag sieht, prüft er zuerst die PGP-Signatur auf dem Git-Tag mit einem manuell konfigurierten GnuPG-Schlüsselring, der nur die öffentlichen Schlüssel der PGP-Schlüssel enthält, die zur Kennzeichnung von Website-Releases berechtigt sind.
Nachdem der Git-Tag verifiziert wurde, wird das Ziel f-droid.org in
.gitlab-ci.yml
ausgeführt, um die eigentlichen Dateien für die Website zu generieren.
Diese Dateien werden dann auf die f-droid.org Server kopiert.
Die Deploy-Tags verwenden ein Namensschema mit “semantischer Versionierung”:
- <major>.<minor>
- <minor> wird bei jedem Deployment erhöht
- <major> wird nur erhöht, wenn es größere Veränderungen gibt
