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:
- 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).
- 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í.
- CI/CD premenné pre podmienečné vykonávanie: Vo súbore
.gitlab-ci.ymlmôž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.