Sobes.tech
Middle

Ako vytvoriť opakujúce sa úlohy v GitLab CI?

sobes.tech AI

Odpoveď od AI

Existuje niekoľko prístupov na vytváranie opakujúcich sa úloh v GitLab CI:

  1. Plány pipeline (Pipeline Schedules): Toto je najbežnejší a určený na tento účel spôsob. Nastavujete plán v rozhraní GitLab, uvádzajúc vetvu/tag, premenné (ak je potrebné) a frekvenciu vykonávania (cron syntax).
  2. API spúšťače: Môžete použiť API GitLab na spustenie pipeline z vonkajšieho systému alebo skriptu. Je to užitočné, ak je plán zložitejší alebo závisí od vonkajších udalostí.
  3. CI/CD premenné pre podmienečné vykonávanie: Vo súbore .gitlab-ci.yml môžete použiť preddefinované alebo vlastné premenné na určenie podmienok vykonávania úlohy. Hoci to nevytvára plán ako taký, môžete spustiť pipeline podľa plánu (cez Pipeline Schedules) a vo vnútri neho rozhodnúť, ktoré úlohy vykonať na základe premenných plánu.

Príklad použitia Pipeline Schedules:

V rozhraní GitLab prejdite do repozitára -> Build -> Pipeline schedules. Vytvorte nový plán, uvedomujúc:

  • Popis
  • Vetva/tag
  • Interval (cron syntax, napríklad 0 0 * * * pre denný štart o polnoci)
  • Premenné (voliteľné)

Príklad API spúšťača (použitím curl):

# Nahraďte Private-Token vaším osobným tokenom s právami API
# Nahraďte <your_project_id> ID vášho projektu
# Nahraďte <your_ref_name> názvom vetvy alebo 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'

Príklad použitia premennej v .gitlab-ci.yml na podmienečné vykonávanie:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Táto úloha sa spúšťa iba pri spustení zo plánu"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Táto úloha sa spúšťa pre všetky zdroje pipeline"
  # Nie je tu podmienka `only: variables:`

Výber metódy závisí od konkrétnych požiadaviek. Pre jednoduché opakujúce sa úlohy sú Pipeline Schedules optimálnou voľbou. Pre zložitejšie scenáre alebo integráciu s vonkajšími systémami sú vhodné API spúšťače. Podmienečné vykonávanie s premennými je užitočné na kontrolu toku v rámci už spusteného pipeline.