Middle
Jak tworzyć powtarzające się zadania w GitLab CI?
sobes.tech AI
Odpowiedź od AI
Istnieje kilka podejść do tworzenia powtarzających się zadań w GitLab CI:
- Harmonogramy pipeline (Pipeline Schedules): To najbardziej powszechna i przeznaczona do tego metoda. Konfigurujesz harmonogram w interfejsie GitLab, wskazując gałąź/tag, zmienne (jeśli konieczne) i częstotliwość wykonywania (składnia cron).
- Wyzwalacze API: Możesz użyć API GitLab do uruchamiania pipeline'ów z systemu zewnętrznego lub skryptu. Jest to przydatne, jeśli harmonogram jest bardziej skomplikowany lub zależy od zdarzeń zewnętrznych.
- Zmienne CI/CD do warunkowego wykonywania: W pliku
.gitlab-ci.ymlmożna używać zdefiniowanych lub niestandardowych zmiennych do określenia warunków wykonania zadania. Chociaż to nie tworzy harmonogramu samo w sobie, można uruchomić pipeline według harmonogramu (przez Pipeline Schedules) i decydować, które zadania wykonywać na podstawie zmiennych harmonogramu.
Przykład użycia Pipeline Schedules:
W interfejsie GitLab przejdź do repozytorium -> Build -> Pipeline schedules. Utwórz nowy harmonogram, wskazując:
- Opis
- Gałąź/tag
- Interwał (składnia cron, np.
0 0 * * *dla codziennego uruchomienia o północy) - Zmienne (opcjonalnie)
Przykład wyzwalacza API (używając curl):
# Zamień Private-Token na swój osobisty token dostępu z uprawnieniami API
# Zamień <your_project_id> na ID swojego projektu
# Zamień <your_ref_name> na nazwę gałęzi lub tagu
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'
Przykład użycia zmiennej w .gitlab-ci.yml do warunkowego wykonywania:
stages:
- build
- deploy
scheduled_job:
stage: build
script:
- echo "Ta praca uruchamia się tylko, gdy jest wywoływana przez harmonogram"
only:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
other_job:
stage: deploy
script:
- echo "Ta praca uruchamia się dla wszystkich źródeł pipeline"
# Brak warunku `only: variables:`
Wybór metody zależy od konkretnych wymagań. Dla prostych powtarzających się zadań najlepszym wyborem są Pipeline Schedules. Dla bardziej skomplikowanych scenariuszy lub integracji z systemami zewnętrznymi odpowiednie są wyzwalacze API. Warunkowe wykonywanie z zmiennymi jest przydatne do kontroli przepływu w już uruchomionym pipeline.