Gitlab-da o'zgaruvchilar bir necha joylarda o'rnatilishi mumkin:
- Guruh sozlamalarida
- Loyiha sozlamalarida
- .gitlab-ci.yml ichida
Bunday holda, guruh va loyiha sozlamalaridagi o'zgaruvchilar "fayl" yoki "muntazam o'zgaruvchi" sifatida o'rnatilishi mumkin va "himoyalangan" va "niqob" katakchalarini belgilang.
Keling, oddiy merosdan boshlaylik va u asta-sekin murakkablashadi.
Ustuvorlik darajalarining yakuniy ro'yxatini hujjat oxirida topish mumkin.
Guruhlar bilan meros [manbalar]
Guruhlardagi o'zgaruvchilar meros qilib olinadi, qoidaga ko'ra, guruh loyihaga qanchalik yaqin joylashgan bo'lsa, uning qiymati shunchalik muhim bo'ladi.
O'zgaruvchilar bilan guruhlar
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Quvur liniyasi natijasi
$ echo $MSG
B
Agar o'zgaruvchi B guruhida ko'rsatilmagan bo'lsa, biz A qiymatini ko'rgan bo'lardik.
.gitlab-ci.yml ichidagi o'zgaruvchilarni meros qilib olish [manbalar]
Bu erda hamma narsa juda oddiy: siz o'zgaruvchini global miqyosda o'rnatishingiz mumkin yoki uni ish ichida qayta yozishingiz mumkin.
O'zgaruvchilar bilan guruhlar
.gitlab-ci.yml
Keling, 2 ta ish o'rni yarataylik, ulardan birida biz $MSG ni aniq ko'rsatamiz.
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
Quvur liniyasi natijasi
- aks-sado:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- Vars bilan echo:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Guruhlar bilan va .gitlab-ci.yml ichida meros [manbalar]
Keling, oldingi 2 ta misolni birlashtirishga harakat qilaylik. Guruh o'zgaruvchilari .gitlab-ci.yml ichidagi o'zgaruvchilardan ustunlik qiladi.
O'zgaruvchilar bilan guruhlar
.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
Quvur liniyasi natijasi
- aks-sado:
$ echo $MSG Y Job succeeded
- Vars bilan echo:
$ echo $MSG Y Job succeeded
Loyiha sozlamalarida o'zgaruvchilarni ko'rsatish bilan meros [manbalar]
Loyiha sozlamalaridagi o'zgaruvchilar DOIMA eng yuqori ustuvorlikka ega! Va .gitlab-ci.yml ichida ko'rsatilgan o'zgaruvchilar hech qanday rol o'ynamaydi.
O'zgaruvchilar bilan guruhlar
Guruh o'zgaruvchilari pastroq ustuvorlikka ega.
.gitlab-ci.yml
Oldingi misoldagi fayldan foydalanamiz. Bu erda yana .gitlab-ci.yml ichida ko'rsatilgan o'zgaruvchilar bor, lekin guruhlar ichidagi o'zgaruvchilar hali ham ulardan ustun turadi.
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
Quvur liniyasi natijasi
- aks-sado:
$ echo $MSG project-3 Job succeeded
- Vars bilan echo:
$ echo $MSG project-3 Job succeeded
Bo'sh qiymatga ega bo'lgan meros [manbalar]
Bo'sh qiymat ham qiymatdir
Bo'sh qiymat Null emas
O'zgaruvchilar bilan guruhlar
.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
Quvur liniyasi natijasi
- aks-sado:
$ echo $MSG Job succeeded
- Vars bilan echo:
$ echo $MSG Job succeeded
O'z ichiga va guruhlar bilan meros [manbalar]
Bu erda biz loyiha-2-ni loyiha-3ga kiritishga harakat qilamiz
Bu holatda guruhlar ustuvorlikka ega.
O'zgaruvchilar bilan guruhlar
.gitlab-ci.yml
Va o'zgaruvchini global miqyosda .gitlab-ci.yml da o'rnating
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Quvur liniyasi natijasi
- aks-sado:
$ echo $MSG B Job succeeded
- Vars bilan echo:
$ echo $MSG B Job succeeded
O'z ichiga olgan meros [manbalar]
Bu erda biz loyiha-2-ni loyiha-3ga kiritishga harakat qilamiz.
Shart bilan: na guruhlarda, na loyihaning o'zida hech qanday o'zgaruvchi bo'lmasligi.
O'zgaruvchilar bilan guruhlar
.gitlab-ci.yml
Xuddi oldingi misoldagi kabi
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Quvur liniyasi natijasi
- aks-sado:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- Vars bilan echo:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Natijalar quyidagicha ustuvorliklar:
- Loyiha sozlamalaridagi o'zgaruvchilar
- Guruhlardagi o'zgaruvchilar
- Ishlar ichida qat'iy belgilangan o'zgaruvchilar (jumladan, kiritilgan fayllar)
- .gitlab-ci.yml ichidagi global o'zgaruvchilar
- Kiritilgan fayllar ichidagi global o'zgaruvchilar
xulosa
Eng aniq bo'lmagan nuqta shundaki, "o'zgaruvchi kodga qanchalik yaqin bo'lsa, u shunchalik muhim" qoidasi birinchi navbatda guruhlar uchun ishlaydi, keyin esa .gitlab-ci.yml ichidagi o'zgaruvchilar uchun xuddi shu qoida, lekin faqat shart ostida ishlaydi. guruhlardagi o'zgaruvchilar ko'rsatilmaganligi.
Keyinchalik, muhim nuqta - asosiy va kiritilgan .gitlab-ci.yml uchun global makon umumiy ekanligini tushunishdir. Va qo'shilish sodir bo'lgan fayl ustuvorlikka ega.
Manba: www.habr.com