Middle
GitLab CI'da takrorlanadigan vazifalarni qanday yaratish mumkin?
sobes.tech AI
AIdan javob
GitLab CI-da takroriy vazifalarni yaratish uchun bir nechta yondashuvlar mavjud:
- Pipeline jadvalari (Pipeline Schedules): Bu eng keng tarqalgan va buning uchun mo'ljallangan usul. Siz GitLab interfeysida jadvalni sozlaysiz, shox/etag, o'zgaruvchilar (zarur bo'lsa) va bajarilish chastotasini (cron sintaksisi) ko'rsatasiz.
- API triggerlari: Siz GitLab API-dan tashqi tizim yoki skript orqali pipeline'larni ishga tushirish uchun foydalanishingiz mumkin. Bu, agar jadval murakkabroq bo'lsa yoki tashqi voqealarga bog'liq bo'lsa, foydalidir.
- CI/CD o'zgaruvchilari yordamida shartli bajarish:
.gitlab-ci.ymlfaylida, oldindan belgilangan yoki maxsus o'zgaruvchilarni ishlatib, vazifaning bajarilish shartlarini belgilashingiz mumkin. Bu o'z-o'zidan jadvalni yaratmasa-da, siz jadval bilan pipeline'ni ishga tushirishingiz va ichida jadval o'zgaruvchilariga asoslangan holda bajariladigan vazifalarni tanlashingiz mumkin.
Pipeline jadvalaridan foydalanish misoli:
GitLab interfeysida, repository -> Build -> Pipeline jadvalariga o'ting. Yangi jadvalni quyidagicha sozlang:
- Tavsif
- Shox/etag
- Intervall (cron sintaksisi, masalan,
0 0 * * *kechasi o'z vaqtida ishga tushirish uchun) - O'zgaruvchilar (ixtiyoriy)
API triggeri misoli (curl yordamida):
# Private-Token ni shaxsiy API huquqlariga ega bo'lgan token bilan almashtiring
# <your_project_id> ni loyihangiz ID bilan almashtiring
# <your_ref_name> ni shox yoki etiket nomi bilan almashtiring
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 faylida shartli bajarish uchun o'zgaruvchi misoli:
stages:
- build
- deploy
scheduled_job:
stage: build
script:
- echo "Bu ish faqat jadval bilan ishga tushirilganda bajariladi"
only:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
other_job:
stage: deploy
script:
- echo "Bu ish barcha pipeline manbalarida bajariladi"
# `only: variables:` shartini qo'ymang
Usul tanlovi aniq talablar va shartlarga bog'liq. Oddiy takroriy vazifalar uchun Pipeline Schedules eng yaxshi tanlov. Murakkabroq vaziyatlar yoki tashqi tizimlar bilan integratsiya uchun API triggerlari mos keladi. O'zgaruvchilar bilan shartli bajarish, allaqachon ishga tushirilgan pipeline ichida oqimni nazorat qilish uchun foydalidir.