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 հրահանգիչները: Պայմանական կատարումը փոփոխականներով օգտակար է ընթացքի վերահսկման համար արդեն գործարկված կոնվեյերում։