Gitlab Pages

Was ist Gitlab Pages?

Unsere gitlab Installation bietet die Möglichkeit, statische Websites zu hosten. Bestes Beispiel ist diese FAQ, welche Du gerade liest. Dazu hat jeder Benutzer und jede Gruppe die Möglichkeit, ein Repository mit dem eigenen Namen (zum Beispiel faq.nerdbridge.xyz für die Gruppe faq) anzulegen.

Die Domain .nerdbridge.xyz ist dabei Pflicht. Eigene Domains werden nicht unterstützt.

Tipp

Keinen Bock so viel zu lesen? Springe direkt zur Too long, didn’t read Sektion.

Funktionsweise

Der Source Code der Website wird ganz klassisch in das git Repository eingecheckt. Anschließend muss über .gitlab-ci.yml ein Pipeline Job mit dem Namen pages erstellt werden.

Der Job muss, nachdem er durchgelaufen ist, ein Artefakt mit dem Namen public erzeugen. Der Inhalt dieses Artefaktes wird dann unter den gewählten Domain gehostet.

CI Pipeline Beispiel

image: registry.git.nerdbridge.de/nerdbridge/docker-hyde:current

pages:
stage: deploy
script:
  - 'make html'
  - 'mkdir public'
  - 'cp -r _build/html/* public'
artifacts:
  paths:
    - public
only:
    - master

Im Script des gezeigten Beispiels wird der Code mit Sphinx gebaut, in einen frisch erzeugten public-Ordner kopiert und dieser als Artefakt an den gitlab Server übergeben.

Tipp

Man muss keinen Generator wie Jekyll oder Sphinx nutzen. Für ganz einfache Websites kann man das HTML auch manuell schreiben und über die CI Pipeline in den public-Ordner kopieren lassen.

Docker Images

Unsere CI Pipelines arbeiten mit Docker Images. Das macht es möchlich, jedes beliebiges Werkzeug zu benutzen. Unser Standard-Image docker-hyde enthält folgende Werkzeuge:

  • Jekyll
  • Sphinx (der Generator dieser Website)
  • NodeJS

Warnung

Versuche bitte möglichst unser eigenes Image zu benutzen. So kann das Risiko, ein kompromittiertes Image zu erwischen, minimiert werden.

Gitlab CI Runner erforderlich

Für das ausführen von CI Pipeline Jobs ist ein Runner notwendig. Entweder Du kannst einen eigenen Runner betreiben und in Deinem Projekt registrieren, oder Du fragst einen Administrator, der anschließend einen vorhandenen Runner Deinem Projekt zuweist.

Weitere Hosting Möglichkeiten

Neben dem name.nerdbridge.xyz Repository, welches in jeder Gruppe bzw jedem Account nur einmal existieren kann, unterstützt auch jedes andere Repository das Hosten von Websites. Hier wird allerdings nicht direkt auf einer Subdomain gehostet, sondern in einem Unterordner.

Typ Projekt Name URL
Benutzerseite benutzername.nerdbridge.xyz http://benutzername.nerdbridge.xyz
Gruppenseite gruppenname.nerdbridge.xyz http://gruppenname.nerdbridge.xyz
Projektseite projektname http://benutzername.nerdbridge.xyz/projektname
Projektseite projektname http://gruppenname.nerdbridge.xyz/projektname
Subprojektseite subgruppe/projekt http://gruppenname.nerdbridge.xyz/subgruppe/projekt

Too long, didn’t read

Das ganze noch mal kurz und knackig:

  • Repostory mit dem richtigen Namen anzulegen
  • Rohes HTML oder Code für einen Generator einchecken
  • CI Pipeline Konfiguration anlegen
  • Einen gitlab Admin um die Zuweisung eines CI Runners bitten
  • Pipeline ausführen
  • Neu veröffentliche Website aufrufen