Schritt-für-Schritt-Anleitung zum Erstellen der .gitlab-ci.yml-Datei

Grundlagen der .gitlab-ci.yml

3. Schritt-für-Schritt-Anleitung

Sobald Sie das Repository in Ihr GitLab-Konto geforkt haben, können Sie mit dem Erstellen der .gitlab-ci.yml-Datei beginnen und die Stages und Jobs der Pipeline konfigurieren. Diese Schritt-für-Schritt-Anleitung hilft Ihnen dabei, eine grundlegende CI/CD-Pipeline für das Projekt zur Analyse von Forschungspublikationen zu erstellen.

3.1 Eine .gitlab-ci.yml-Datei erstellen

Zunächst muss eine .gitlab-ci.yml-Datei erstellt werden. Dafür gibt es zwei Möglichkeiten: über die GitLab-Oberfläche oder durch manuelles Anlegen.

Sie können die .gitlab-ci.yml-Datei zwar manuell erstellen, für die erste CI/CD-Pipeline ist es jedoch oft einfacher, die GitLab-Oberfläche zu verwenden. Die Oberfläche bietet eine visuelle und umfassende Möglichkeit, eine Pipeline zu erstellen.

In diesem Beispiel wird die GitLab-Oberfläche genutzt, um die erste CI/CD-Pipeline zu erstellen. GitLab bietet dafür eine visuelle und umfassende Möglichkeit.

  1. Pipeline-Editor: Öffnen Sie im Projekt den Bereich Build und wählen Sie Pipeline editor.

    Pipeline-Editor

  2. Pipeline konfigurieren: Klicken Sie auf die Schaltfläche Configure pipeline. GitLab erstellt daraufhin eine grundlegende Pipeline, mit der Sie arbeiten können.

    Pipeline konfigurieren

  3. Bereiche des Pipeline-Editors: Der Pipeline-Editor enthält vier Bereiche: Edit, Visualize, Validate und Full configuration.

    • Edit: Hier bearbeiten Sie die Pipeline, definieren die Stages und fügen Jobs und Abhängigkeiten hinzu, also nahezu alles, was Sie zum Definieren einer CI/CD-Pipeline benötigen.

      Pipeline bearbeiten

    • Visualize: Hier sehen Sie die Stages und Jobs grafisch angeordnet.

      Pipeline visualisieren

    • Validate: Hier prüfen Sie Ihre CI/CD-Konfiguration vor dem Commit der Änderungen, um festzustellen, ob die Pipeline das erwartete Ergebnis liefert.

      Pipeline validieren

    • Full configuration: Zeigt die vollständig aufgelöste Konfiguration der Pipeline einschließlich eingebundener Einstellungen an. Wenn Sie diesen Bereich nicht verwenden, übernimmt GitLab die Auflösung automatisch.

3.2 Stages definieren

Definieren Sie zunächst die Stages Ihrer Pipeline. Stages sind die einzelnen Phasen, die Ihre CI/CD-Pipeline durchläuft. Jede Stage steht für einen Schritt bei der Auslieferung Ihrer Software, vom Bauen des Codes über das Testen bis zur Bereitstellung.

  • Build-Stage: Diese Stage ist dafür zuständig, den Quellcode zu kompilieren und für die Tests vorzubereiten.
  • Test-Stage: Diese Stage führt automatisierte Tests aus, um sicherzustellen, dass der Code korrekt funktioniert.
  • Deploy-Stage: Diese Stage übernimmt die Bereitstellung der Anwendung in der vorgesehenen Umgebung.
stages:
  - build
  - test
  - deploy

Hinweis: Dies ist nur ein Beispiel. Sie können die Stages definieren, die Sie für Ihre Anwendung für notwendig halten. Die Stages können beliebig benannt werden.

3.3 Jobs für jede Stage hinzufügen

Die GitLab-CI/CD-Pipeline wurde nun mit dem Pipeline editor in der GitLab-Oberfläche erstellt, und die grundlegenden stages sind definiert.

Fügen Sie als Nächstes Jobs für jede Stage hinzu. Jobs sind die einzelnen Aufgaben, die innerhalb einer Stage ausgeführt werden. Jeder Job legt eine Folge von Befehlen (Skripten) fest, die ausgeführt werden sollen.

Im Beispiel werden nun Jobs für jede der definierten Stages angelegt.

Build-Stage

In der Build-Stage kompilieren Sie üblicherweise den Quellcode und bereiten ihn für die Tests vor.

build_job:
  stage: build
  script:
    - echo "Anwendung wird gebaut..."
    - pip install -r requirements.txt
    - echo "Build abgeschlossen"

Test-Stage

In der Test-Stage führen Sie automatisierte Tests aus, um sicherzustellen, dass der Code korrekt funktioniert.

test_job:
  stage: test
  script:
    - echo "Tests werden ausgeführt..."
    - pytest tests/
    - echo "Tests abgeschlossen"

Deploy-Stage

In der Deploy-Stage stellen Sie die Anwendung in der vorgesehenen Umgebung bereit. (Im Beispiel wird die Anwendung nicht tatsächlich bereitgestellt.)

deploy_job:
  stage: deploy
  script:
    - echo "Anwendung wird bereitgestellt..."
    - # scp -r dist/ user@server:/path/to/deploy
    - echo "Bereitstellung abgeschlossen"

3.4 Skripte zu den Jobs hinzufügen

Jeder Job sollte die Skripte enthalten, die zur Erledigung seiner Aufgaben notwendig sind. Diese Skripte sind die eigentlichen Befehle, die während der Pipeline-Ausführung ausgeführt werden.

Beispiel für einen Build-Job

In diesem Build-Job wird die Anwendung gebaut, indem die Abhängigkeiten des Python-Projekts installiert werden und der Build-Befehl ausgeführt wird. Der Befehl pip install -r requirements.txt installiert die in der Datei requirements.txt definierten Python-Pakete, und python setup.py build kompiliert die Python-Anwendung.

build_job:
  stage: build
  script:
    - echo "Anwendung wird gebaut..."
    - pip install -r requirements.txt
    - python setup.py build

Beispiel für einen Test-Job

In diesem Test-Job werden die Tests der Anwendung ausgeführt, um ihre Funktionalität zu überprüfen.

test_job:
  stage: test
  script:
    - echo "Tests werden ausgeführt..."
    - python -m unittest discover

Beispiel für einen Deploy-Job

In diesem Deploy-Job wird die gebaute Anwendung auf einen Server kopiert. (Wie bereits erwähnt, wird die Anwendung im Beispiel nicht tatsächlich bereitgestellt.)

deploy_job:
  stage: deploy
  script:
    - echo "Anwendung wird bereitgestellt..."
    - scp -r dist/ user@server:/path/to/deploy

3.5 Abhängigkeiten hinzufügen (optional)

Wenn bestimmte Jobs die Ausgaben anderer Jobs benötigen, können Sie Abhängigkeiten definieren. Dadurch stehen die benötigten Artefakte im nachfolgenden Job zur Verfügung.

test_job:
  stage: test
  script:
    - echo "Tests werden ausgeführt..."
    - python -m unittest discover
  dependencies:
    - build_job

3.6 Artefakte definieren (optional)

Artefakte sind Dateien, die von Jobs erzeugt werden und an nachfolgende Jobs weitergegeben werden können. Das ist nützlich, um Build-Ausgaben zwischen Jobs bereitzustellen.

build_job:
  stage: build
  script:
    - pip install -r requirements.txt
    - python setup.py build
  artifacts:
    paths:
      - dist/