Sobes.tech
Middle

GitLab CI-də təkrarlanan tapşırıqları necə yaratmaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

GitLab CI-də təkrarlanan tapşırıqları yaratmaq üçün bir neçə yanaşma mövcuddur:

  1. Pipeline Cədvəlləri (Pipeline Schedules): Bu, ən çox yayılmış və bunun üçün nəzərdə tutulmuş üsuldur. Siz GitLab interfeysində cədvəli qurursunuz, şaxə/etiket, dəyişənlər (əgər lazımdırsa) və icra tezliyini (cron sintaksisi) göstərirsiniz.
  2. API triggerləri: Siz GitLab API-dan istifadə edərək xarici sistem və ya skript vasitəsilə pipeline-ləri başlada bilərsiniz. Bu, cədvəl daha mürəkkəb və ya xarici hadisələrə bağlı olduqda faydalıdır.
  3. CI/CD dəyişənləri ilə şərti icra: .gitlab-ci.yml faylında, əvvəlcədən təyin olunmuş və ya xüsusi dəyişənlərdən istifadə edərək tapşırığın icra şərtlərini müəyyən edə bilərsiniz. Bu, öz-özünə cədvəl yaratmasa da, siz cədvəl ilə pipeline başlatıb, içində cədvəl dəyişənlərinə əsasən hansı tapşırıqları icra edəcəyinizə qərar verə bilərsiniz.

Pipeline cədvəllərindən istifadə nümunəsi:

GitLab interfeysində, repository -> Build -> Pipeline cədvəllərinə keçin. Yeni cədvəl yaradın və aşağıdakıları göstərin:

  • Təsviri
  • Şaxə/etiket
  • Aralıq (cron sintaksisi, məsələn, 0 0 * * * gecə yarısı gündəlik işə salmaq üçün)
  • Dəyişənlər (istəyə bağlı)

API trigger nümunəsi (curl istifadə edərək):

# Private-Token-i API hüquqları olan şəxsi giriş tokeninizlə dəyişdirin
# `<your_project_id>`-ni layihənizin ID-si ilə dəyişdirin
# `<your_ref_name>`-ni şaxə və ya etiket adı ilə dəyişdirin

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-də şərti icra üçün dəyişən nümunəsi:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Bu iş yalnız cədvəl tərəfindən tetikləndikdə işləyir"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Bu iş bütün pipeline mənbələri üçün işləyir"
  # `only: variables:` şərti yoxdur

Metod seçimi xüsusi tələblərdən asılıdır. Sadə təkrarlanan tapşırıqlar üçün Pipeline Schedules ən yaxşı seçimdir. Daha mürəkkəb ssenarilər və ya xarici sistemlərlə inteqrasiya üçün API triggerləri uyğundur. Dəyişənlərlə şərti icra, artıq başlatılmış pipeline daxilində axını idarə etmək üçün faydalıdır.