Sobes.tech
Middle

Jak vytvořit opakující se úkoly v GitLab CI?

sobes.tech AI

Odpověď od AI

Existuje několik přístupů k vytváření opakujících se úkolů v GitLab CI:

  1. Plánování pipeline (Pipeline Schedules): Jedná se o nejčastější a pro tento účel určenou metodu. Nastavíte plán v rozhraní GitLab, zadáte větev/štítek, proměnné (pokud je potřeba) a frekvenci spuštění (cron syntaxe).
  2. API spouštěče: Můžete použít API GitLab k spuštění pipeline z externího systému nebo skriptu. To je užitečné, pokud je plán složitější nebo závisí na vnějších událostech.
  3. Podmíněné spuštění pomocí CI/CD proměnných: V souboru .gitlab-ci.yml můžete použít předdefinované nebo vlastní proměnné k určení podmínek spuštění úkolu. Ačkoliv to nevytváří plán sám o sobě, můžete spustit pipeline podle plánu (přes Pipeline Schedules) a uvnitř rozhodnout, které úkoly spustit na základě proměnných plánu.

Příklad použití Pipeline Schedules:

V rozhraní GitLab přejděte do repozitáře -> Build -> Pipeline schedules. Vytvořte nový plán s uvedením:

  • Popis
  • Větev/štítek
  • Interval (cron syntaxe, například 0 0 * * * pro denní spuštění o půlnoci)
  • Proměnné (volitelné)

Příklad API spouštěče (pomocí curl):

# Nahraďte Private-Token svým osobním přístupovým tokenem s právy API
# Nahraďte `<your_project_id>` ID vašeho projektu
# Nahraďte `<your_ref_name>` názvem větve nebo štítku

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'

Příklad použití proměnné v .gitlab-ci.yml pro podmíněné spuštění:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Tato práce se spustí pouze při spuštění plánem"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Tato práce se spustí pro všechny zdroje pipeline"
  # Bez podmínky `only: variables:`

Volba metody závisí na konkrétních požadavcích. Pro jednoduché opakující se úkoly jsou nejlepší plány pipeline. Pro složitější scénáře nebo integraci s externími systémy jsou vhodné API spouštěče. Podmíněné spuštění s proměnnými je užitečné pro řízení toku uvnitř již spuštěného pipeline.