.. _service-gitlab-pages: Gitlab Pages ############ .. toctree:: :maxdepth: 2 .. _glpages-whatthe: 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.** .. tip:: Keinen Bock so viel zu lesen? Springe direkt zur :ref:`glpages-tldr` Sektion. .. _glpages-howthe: 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. .. _glpages-ciexample: CI Pipeline Beispiel -------------------- .. code-block:: yaml 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. .. tip:: 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. .. _glpages-docker: 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 .. warning:: Versuche bitte möglichst unser eigenes Image zu benutzen. So kann das Risiko, ein kompromittiertes Image zu erwischen, minimiert werden. .. _glpages-cirunner: 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. .. _glpages-morehosting: 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. .. csv-table:: :header: "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 .. _glpages-tldr: Too long, didn't read ===================== Das ganze noch mal kurz und knackig: - Repostory :ref:`mit dem richtigen Namen ` anzulegen - Rohes HTML oder Code für einen Generator einchecken - :ref:`CI Pipeline Konfiguration ` anlegen - Einen gitlab Admin um die Zuweisung eines CI Runners bitten - Pipeline ausführen - Neu veröffentliche Website aufrufen