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