Bereitstellung der Website

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