Sobes.tech
Middle

Wie erstellt man wiederkehrende Aufgaben in GitLab CI?

sobes.tech KI

Antwort von AI

Es gibt mehrere Ansätze, um wiederkehrende Aufgaben in GitLab CI zu erstellen:

  1. Pipeline-Zeitpläne (Pipeline Schedules): Dies ist die häufigste und dafür vorgesehene Methode. Sie konfigurieren einen Zeitplan in der GitLab-Oberfläche, wobei Sie den Branch/Tag, Variablen (falls erforderlich) und die Ausführungsfrequenz (Cron-Syntax) angeben.
  2. API-Trigger: Sie können die GitLab-API verwenden, um Pipelines aus einem externen System oder Skript zu starten. Dies ist nützlich, wenn der Zeitplan komplexer ist oder von externen Ereignissen abhängt.
  3. CI/CD-Variablen für bedingte Ausführung: Innerhalb der Datei .gitlab-ci.yml können Sie vordefinierte oder benutzerdefinierte Variablen verwenden, um die Ausführungsbedingungen der Aufgabe zu bestimmen. Obwohl dies keinen Zeitplan an sich erstellt, können Sie eine Pipeline nach einem Zeitplan (über Pipeline-Zeitpläne) starten und innerhalb dieser entscheiden, welche Aufgaben basierend auf den Variablen ausgeführt werden.

Beispiel für die Verwendung von Pipeline-Zeitplänen:

Gehen Sie in der GitLab-Oberfläche zum Repository -> Build -> Pipeline-Zeitpläne. Erstellen Sie einen neuen Zeitplan, indem Sie angeben:

  • Beschreibung
  • Branch/Tag
  • Intervall (Cron-Syntax, z.B. 0 0 * * * für täglichen Start um Mitternacht)
  • Variablen (optional)

Beispiel für einen API-Trigger (mit curl):

# Ersetzen Sie Private-Token durch Ihren persönlichen Zugriffstoken mit API-Rechten
# Ersetzen Sie <your_project_id> durch die ID Ihres Projekts
# Ersetzen Sie <your_ref_name> durch den Namen des Branches oder Tags

curl --request POST \
     --header 'Content-Type: application/json' \
     --header 'Private-Token: <your_private_token>' \
     --data '{
       "ref": "<your_ref_name>",
       "variables": {
         "MY_VARIABLE": "some_value"
       }
     }' \
     'https://gitlab.com/api/v4/projects/<your_project_id>/trigger/pipeline'

Beispiel für die Verwendung einer Variablen in .gitlab-ci.yml für bedingte Ausführung:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Dieser Job läuft nur, wenn er durch einen Zeitplan ausgelöst wird"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Dieser Job läuft für alle Pipeline-Quellen"
  # Keine Bedingung `only: variables:`

Die Wahl der Methode hängt von den spezifischen Anforderungen ab. Für einfache wiederkehrende Aufgaben sind Pipeline-Zeitpläne die beste Wahl. Für komplexere Szenarien oder die Integration mit externen Systemen eignen sich API-Trigger. Bedingte Ausführung mit Variablen ist nützlich, um den Ablauf innerhalb einer bereits gestarteten Pipeline zu steuern.