Gitlab-ի փոփոխականները կարող են տեղադրվել մի քանի վայրերում.
- Խմբային կարգավորումներում
- Ծրագրի կարգավորումներում
- Ներսում .gitlab-ci.yml
Այս դեպքում խմբի և նախագծի կարգավորումների փոփոխականները կարող են սահմանվել որպես «ֆայլ» կամ «սովորական փոփոխական» և ստուգել «պաշտպանված» և «դիմակ» վանդակները:
Սկսենք պարզ ժառանգությունից, և այն աստիճանաբար ավելի կբարդանա:
Առաջնահերթության մակարդակների վերջնական ցանկը կարելի է գտնել փաստաթղթի վերջում:
Ժառանգություն խմբերի հետ [աղբյուրներ]
Խմբերից փոփոխականները ժառանգվում են, այն կանոնով, որ որքան մոտ է խումբը գտնվում նախագծին, այնքան ավելի կարևոր է դրա արժեքը:
Փոփոխականներով խմբեր
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Խողովակաշարի արդյունքը
$ echo $MSG
B
Եթե փոփոխականը նշված չլիներ B խմբում, ապա մենք կտեսնեինք A արժեքը:
Փոփոխականների ժառանգում .gitlab-ci.yml-ի ներսում [աղբյուրներ]
Այստեղ ամեն ինչ բավականին պարզ է. դուք կարող եք փոփոխական սահմանել գլոբալ մակարդակում, կամ կարող եք այն վերագրել աշխատանքի ներսում:
Փոփոխականներով խմբեր
.gitlab-ci.yml
Այժմ ստեղծենք 2 աշխատատեղ, որոնցից մեկում մենք հստակ կնշենք $MSG:
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Custom in global .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Custom in job .gitlab-ci.yml"
script:
- echo $MSG
Խողովակաշարի արդյունքը
- արձագանք.
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- echo հետ vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Ժառանգություն խմբերով և ներսում .gitlab-ci.yml [աղբյուրներ]
Փորձենք համատեղել նախորդ 2 օրինակները։ Խմբի փոփոխականները գերակայություն ունեն .gitlab-ci.yml ներսում գտնվող փոփոխականների նկատմամբ:
Փոփոխականներով խմբեր
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Custom in global .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Custom in job .gitlab-ci.yml"
script:
- echo $MSG
Խողովակաշարի արդյունքը
- արձագանք.
$ echo $MSG Y Job succeeded
- echo հետ vars:
$ echo $MSG Y Job succeeded
Ժառանգություն նախագծի կարգավորումներում փոփոխականներ նշելով [աղբյուրներ]
Ծրագրի կարգավորումներում փոփոխականները ՄԻՇՏ ունեն ամենաբարձր առաջնահերթությունը: Իսկ .gitlab-ci.yml ներսում նշված փոփոխականները ոչ մի դեր չեն խաղում։
Փոփոխականներով խմբեր
Խմբի փոփոխականներն ավելի ցածր առաջնահերթություն ունեն:
.gitlab-ci.yml
Եկեք օգտագործենք նախորդ օրինակի ֆայլը: Այստեղ կրկին կան փոփոխականներ, որոնք նշված են .gitlab-ci.yml-ի ներսում, բայց խմբերի ներսում փոփոխականները դեռ գերակայում են դրանցից:
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Custom in global .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Custom in job .gitlab-ci.yml"
script:
- echo $MSG
Խողովակաշարի արդյունքը
- արձագանք.
$ echo $MSG project-3 Job succeeded
- echo հետ vars:
$ echo $MSG project-3 Job succeeded
Դատարկ արժեքով ժառանգություն [աղբյուրներ]
Դատարկ արժեքը նույնպես արժեք է
Դատարկ արժեքը Null չէ
Փոփոխականներով խմբեր
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Custom in global .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Custom in job .gitlab-ci.yml"
script:
- echo $MSG
Խողովակաշարի արդյունքը
- արձագանք.
$ echo $MSG Job succeeded
- echo հետ vars:
$ echo $MSG Job succeeded
Ժառանգություն ներառման և խմբերի հետ [աղբյուրներ]
Այստեղ մենք կփորձենք նախագիծ-2-ը ներառել project-3-ի մեջ
Խմբերն այս դեպքում ունեն առաջնահերթություն:
Փոփոխականներով խմբեր
.gitlab-ci.yml
Եվ փոփոխականը գլոբալ սահմանեք .gitlab-ci.yml-ում
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Խողովակաշարի արդյունքը
- արձագանք.
$ echo $MSG B Job succeeded
- echo հետ vars:
$ echo $MSG B Job succeeded
Ժառանգությունը ներառումով [աղբյուրներ]
Այստեղ մենք կփորձենք նախագիծ-2-ը ներառել project-3-ի մեջ:
Պայմանով, որ ոչ խմբերը, ոչ էլ հենց նախագիծը փոփոխականներ չունեն:
Փոփոխականներով խմբեր
.gitlab-ci.yml
Նույնը, ինչ նախորդ օրինակում
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Խողովակաշարի արդյունքը
- արձագանք.
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- echo հետ vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Արդյունքները հետեւյալն են առաջնահերթությունները:
- Փոփոխականներ նախագծի կարգավորումներում
- Փոփոխականներ խմբերում
- Աշխատանքների ներսում խստորեն նշված փոփոխականներ (ներառյալ ներառված ֆայլերը)
- Գլոբալ փոփոխականներ .gitlab-ci.yml-ի ներսում
- Ներառված ֆայլերի ներսում գլոբալ փոփոխականներ
Ամփոփում
Ամենաանհայտ կետն այն է, որ «որքան փոփոխականը մոտ է կոդին, այնքան ավելի կարևոր է» կանոնը գործում է սկզբում խմբերի համար, իսկ հետո նույն կանոնը .gitlab-ci.yml ներսում գտնվող փոփոխականների համար, բայց միայն պայմանով. որ խմբերի փոփոխականները նշված չեն:
Հաջորդը, կարևոր կետ է հասկանալ, որ հիմնական և ներառված .gitlab-ci.yml-ի գլոբալ տարածությունը ընդհանուր է: Իսկ այն ֆայլը, որում ընդգրկումը տեղի է ունենում, ունի առաջնահերթություն:
Source: www.habr.com