Middle
Чӣ гуна бояд вазифаҳои такроршавандаро дар GitLab CI эҷод кард?
sobes.tech AI
Ҷавоб аз AI
Меъёри чандин роҳҳо барои эҷоди вазифаҳои такрорӣ дар GitLab CI вуҷуд дорад:
- Тақвимҳои конвейер (Pipeline Schedules): Ин бештари истифода ва барои ин мақсад пешбинӣ шудааст. Шумо дар интерфейси GitLab тақвимро танзим мекунед, шоха/тамға, тағйирёбандаҳо (агар лозим бошад) ва басомади иҷро (синтаксиси cron) -ро нишон медиҳед.
- Триггерҳои API: Шумо метавонед API-и GitLab-ро барои оғоз кардани конвейерҳо аз системаи беруна ё скрипт истифода баред. Ин барои ҳолатҳои мураккабтар ё вобаста ба рӯйдодҳои беруна муфид аст.
- Параметрҳои CI/CD барои иҷрои шартӣ: Дар файли
.gitlab-ci.ymlшумо метавонед тағйирёбандаҳои пешфарз ё истифодашударо барои муайян кардани шартҳои иҷро истифода баред. Гарчанде ин тақвимро ҳамчун такрорсозӣ намекунад, шумо метавонед конвейерро дар асоси тақвим (аз тариқи Pipeline Schedules) оғоз кунед ва дар дохили он қарор кунед, ки кадом вазифаҳоро иҷро кунед, бо асоси тағйирёбандаҳои тақвим.
Маслиҳат барои истифодаи Pipeline Schedules:
Дар интерфейси GitLab ба репозитория -> Build -> Pipeline schedules равед. Як тақвим нав эҷод кунед, бо нишон додани:
- Тавсиф
- Шоха/тамға
- Интервал (синтаксиси cron, масалан,
0 0 * * *барои оғоз дар рӯзона) - Тағйирёбандаҳо (ихтиёрӣ)
Маслиҳат барои истифодаи API триггер (бо истифода аз curl):
# Private-Token-ро бо токени шахсии худ бо ҳуқуқҳои API иваз кунед
# <your_project_id>-ро бо ID-и лоиҳаи худ иваз кунед
# <your_ref_name>-ро бо номи шоха ё тамға иваз кунед
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'
Маслиҳат барои истифодаи тағйирёбанда дар .gitlab-ci.yml барои иҷрои шартӣ:
stages:
- build
- deploy
scheduled_job:
stage: build
script:
- echo "Ин вазифа танҳо вақте ки бо тақвим оғоз мешавад, иҷро мешавад"
only:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
other_job:
stage: deploy
script:
- echo "Ин вазифа барои ҳамаи манбаъҳои конвейер иҷро мешавад"
# Шарт `only: variables:` вуҷуд надорад
Интихоби усул ба талаботи мушаххас вобаста аст. Барои вазифаҳои такрорӣ оддӣ, Pipeline Schedules беҳтарин интихоб аст. Барои сценарийҳои мураккаб ё ҳамгироӣ бо системаҳое, ки беруна ҳастанд, API триггерҳо мувофиқанд. Иҷрои шартӣ бо тағйирёбандаҳо барои назорат кардани ҷараён дар дохили конвейери аллакай оғозшуда кӯмак мекунад.