Middle
როგორ შევქმნათ განმეორებადი დავალებები GitLab CI-ში?
sobes.tech AI
პასუხი AI-სგან
GitLab CI-ში განმეორებადი დავალებების შექმნის რამდენიმე მიდგომაა:
- სქედების გრაფიკები (Pipeline Schedules): ეს არის ყველაზე გავრცელებული და ამისთვის განკუთვნილი მეთოდი. თქვენ კონფიგურირებთ გრაფიკს GitLab-ის ინტერფეისში, მითითებით ფილიალი/ტეგი, ცვლადები (თუ საჭიროა) და შესრულების სიხშირე (cron სინტაქსი).
- API ტრიგერები: შეგიძლიათ გამოიყენოთ GitLab-ის API-ი, რათა გარე სისტემიდან ან სკრიპტიდან დაიწყოთ კონვეიერები. ეს სასარგებლოა, თუ გრაფიკი უფრო რთულია ან დამოკიდებულია გარე მოვლენებზე.
- 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 ტრიგერები. პირობითი შესრულება ცვლადებით სასარგებლოა პროცესის კონტროლისთვის უკვე დაწყებული კონვეიერის ფარგლებში.