Gitlab-da dəyişənlər bir neçə yerdə təyin edilə bilər:
- Qrup parametrlərində
- Layihə parametrlərində
- .gitlab-ci.yml daxilində
Bu halda, qrup və layihə parametrlərindəki dəyişənlər "fayl" və ya "müntəzəm dəyişən" kimi təyin oluna bilər və "qorunan" və "maska" qutularını yoxlayın.
Sadə mirasdan başlayaq və o, getdikcə daha da mürəkkəbləşəcək.
Prioritet səviyyələrinin yekun siyahısı sənədin sonunda tapıla bilər.
Qruplarla miras [mənbələr]
Qruplardan dəyişənlər miras alınır, bir qayda ilə qrup layihəyə nə qədər yaxındırsa, onun dəyəri bir o qədər vacibdir.
Dəyişənləri olan qruplar
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Boru kəmərinin nəticəsi
$ echo $MSG
B
Əgər dəyişən B qrupunda göstərilməsəydi, onda biz A dəyərini görərdik.
.gitlab-ci.yml daxilində dəyişənlərin miras alınması [mənbələr]
Burada hər şey olduqca sadədir: siz qlobal olaraq dəyişən təyin edə bilərsiniz və ya iş daxilində onun üzərinə yaza bilərsiniz.
Dəyişənləri olan qruplar
.gitlab-ci.yml
İndi 2 iş yeri yaradaq, onlardan birində biz açıq şəkildə $MSG göstərəcəyik.
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
Boru kəmərinin nəticəsi
- əks-səda:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- vars ilə əks-səda:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Qruplarla və .gitlab-ci.yml daxilində varislik [mənbələr]
Əvvəlki 2 nümunəni birləşdirməyə çalışaq. Qrup dəyişənləri .gitlab-ci.yml daxilində dəyişənlər üzərində üstünlük təşkil edir.
Dəyişənləri olan qruplar
.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
Boru kəmərinin nəticəsi
- əks-səda:
$ echo $MSG Y Job succeeded
- vars ilə əks-səda:
$ echo $MSG Y Job succeeded
Layihə parametrlərində dəyişənlərin təyin edilməsi ilə varislik [mənbələr]
Layihə parametrlərində dəyişənlər HƏMİŞƏ ən yüksək prioritetə malikdirlər! Və .gitlab-ci.yml daxilində göstərilən dəyişənlər heç bir rol oynamır.
Dəyişənləri olan qruplar
Qrup dəyişənləri daha aşağı prioritetə malikdir.
.gitlab-ci.yml
Əvvəlki nümunədəki fayldan istifadə edək. Burada yenə .gitlab-ci.yml daxilində göstərilən dəyişənlər var, lakin qruplar daxilindəki dəyişənlər hələ də onlardan üstündür.
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
Boru kəmərinin nəticəsi
- əks-səda:
$ echo $MSG project-3 Job succeeded
- vars ilə əks-səda:
$ echo $MSG project-3 Job succeeded
Boş dəyəri olan miras [mənbələr]
Boş dəyər də dəyərdir
Boş dəyər Null deyil
Dəyişənləri olan qruplar
.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
Boru kəmərinin nəticəsi
- əks-səda:
$ echo $MSG Job succeeded
- vars ilə əks-səda:
$ echo $MSG Job succeeded
Daxil və qruplarla miras [mənbələr]
Burada layihə-2-ü layihə-3-yə daxil etməyə çalışacağıq
Bu vəziyyətdə qruplar üstünlük təşkil edir.
Dəyişənləri olan qruplar
.gitlab-ci.yml
Və dəyişəni qlobal olaraq .gitlab-ci.yml-də təyin edin
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Boru kəmərinin nəticəsi
- əks-səda:
$ echo $MSG B Job succeeded
- vars ilə əks-səda:
$ echo $MSG B Job succeeded
Daxil olmaqla miras [mənbələr]
Burada layihə-2-ü layihə-3-yə daxil etməyə çalışacağıq.
Bir şərtlə: nə qrupların, nə də layihənin özündə heç bir dəyişən yoxdur.
Dəyişənləri olan qruplar
.gitlab-ci.yml
Əvvəlki nümunədə olduğu kimi
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Boru kəmərinin nəticəsi
- əks-səda:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- vars ilə əks-səda:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Nəticələr aşağıdakı kimidir prioritetlər:
- Layihə parametrlərində dəyişənlər
- Qruplarda dəyişənlər
- Dəyişənlər işlərin daxilində ciddi şəkildə müəyyən edilir (daxil edilmiş fayllar daxil olmaqla)
- .gitlab-ci.yml daxilində qlobal dəyişənlər
- Daxil edilmiş fayllar daxilində qlobal dəyişənlər
Nəticə
Ən aydın olmayan məqam odur ki, “dəyişən koda nə qədər yaxındırsa, bir o qədər vacibdir” qaydası əvvəlcə qruplar üçün, sonra isə eyni qayda .gitlab-ci.yml daxilindəki dəyişənlər üçün işləyir, lakin yalnız şərtlə qruplardakı dəyişənlərin müəyyən edilməməsi.
Sonra, vacib bir məqam, əsas və daxil edilmiş .gitlab-ci.yml üçün qlobal məkanın ümumi olduğunu başa düşməkdir. Və daxiletmənin baş verdiyi fayl prioritetdir.
Mənbə: www.habr.com