Sobes.tech
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:

  1. 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).
  2. 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.
  3. Zmienne CI/CD do warunkowego wykonywania: W pliku .gitlab-ci.yml moż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.