Sobes.tech
Middle

როგორ შევქმნათ განმეორებადი დავალებები GitLab CI-ში?

sobes.tech AI

პასუხი AI-სგან

GitLab CI-ში განმეორებადი დავალებების შექმნის რამდენიმე მიდგომაა:

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