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:
- 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.
- 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.
- CI/CD-Variablen für bedingte Ausführung: Innerhalb der Datei
.gitlab-ci.ymlkö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.