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