Variablat në Gitlab mund të vendosen në disa vende:
- Në cilësimet e grupit
- Në cilësimet e projektit
- Brenda .gitlab-ci.yml
Në këtë rast, variablat në grup dhe cilësimet e projektit mund të vendosen si "skedar" ose "ndryshore e rregullt" dhe kontrolloni kutitë e kontrollit "të mbrojtura" dhe "maskë".
Le të fillojmë me trashëgiminë e thjeshtë dhe gradualisht do të bëhet më komplekse.
Lista përfundimtare e niveleve prioritare mund të gjendet në fund të dokumentit.
Trashëgimia me grupe [burimet]
Variablat nga grupet trashëgohen, me rregullin që sa më afër të jetë grupi me projektin, aq më e rëndësishme është vlera e tij.
Grupet me variabla
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Rezultati i tubacionit
$ echo $MSG
B
Nëse ndryshorja nuk do të ishte specifikuar në grupin B, atëherë do të kishim parë vlerën A.
Trashëgimi i variablave brenda .gitlab-ci.yml [burimet]
Gjithçka është mjaft e thjeshtë këtu: mund të vendosni një variabël globalisht, ose mund ta mbishkruani brenda punës.
Grupet me variabla
.gitlab-ci.yml
Le të krijojmë tani 2 vende pune, në njërën prej tyre do të tregojmë në mënyrë eksplicite $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
Rezultati i tubacionit
- jehonë:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- jehonë me vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Trashëgimia me grupe dhe brenda .gitlab-ci.yml [burimet]
Le të përpiqemi të kombinojmë 2 shembujt e mëparshëm. Variablat e grupit kanë përparësi ndaj variablave brenda .gitlab-ci.yml.
Grupet me variabla
.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
Rezultati i tubacionit
- jehonë:
$ echo $MSG Y Job succeeded
- jehonë me vars:
$ echo $MSG Y Job succeeded
Trashëgimia me specifikimin e variablave në cilësimet e projektit [burimet]
Variablat në cilësimet e projektit kanë GJITHMONË prioritetin më të lartë! Dhe variablat e specifikuara brenda .gitlab-ci.yml nuk luajnë asnjë rol.
Grupet me variabla
Variablat e grupit kanë prioritet më të ulët.
.gitlab-ci.yml
Le të përdorim skedarin nga shembulli i mëparshëm. Këtu përsëri ka variabla të specifikuar brenda .gitlab-ci.yml, por variablat brenda grupeve ende kanë përparësi ndaj tyre.
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
Rezultati i tubacionit
- jehonë:
$ echo $MSG project-3 Job succeeded
- jehonë me vars:
$ echo $MSG project-3 Job succeeded
Trashëgimia me vlerë boshe [burimet]
Një vlerë boshe është gjithashtu një vlerë
Një vlerë boshe nuk është Null
Grupet me variabla
.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
Rezultati i tubacionit
- jehonë:
$ echo $MSG Job succeeded
- jehonë me vars:
$ echo $MSG Job succeeded
Trashëgimia me përfshirje dhe grupe [burimet]
Këtu do të përpiqemi të përfshijmë projektin-2 në projektin-3
Grupet në këtë rast kanë përparësi.
Grupet me variabla
.gitlab-ci.yml
Dhe vendoseni variablin globalisht në .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'
Rezultati i tubacionit
- jehonë:
$ echo $MSG B Job succeeded
- jehonë me vars:
$ echo $MSG B Job succeeded
Trashegimia me perfshi [burimet]
Këtu do të përpiqemi të përfshijmë projektin-2 në projektin-3.
Me kushtin që: as grupet dhe as vetë projekti të mos kenë variabla.
Grupet me variabla
.gitlab-ci.yml
Njëlloj si në shembullin e mëparshëm
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Rezultati i tubacionit
- jehonë:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- jehonë me vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Rezultatet janë si më poshtë prioritetet:
- Variablat në cilësimet e projektit
- Variablat në grupe
- Variablat e specifikuar rreptësisht brenda punëve (përfshirë skedarët e përfshirë)
- Variablat globalë brenda .gitlab-ci.yml
- Ndryshoret globale brenda skedarëve të përfshirë
Përfundim
Pika më jo e dukshme është se rregulli "sa më afër kodit të jetë një variabël, aq më i rëndësishëm është" funksionon fillimisht për grupet, dhe më pas i njëjti rregull për variablat brenda .gitlab-ci.yml, por vetëm nën kushtin se variablat në grupe nuk janë të specifikuara.
Më pas, një pikë e rëndësishme është të kuptojmë se hapësira globale për .gitlab-ci.yml kryesore dhe të përfshirë është e zakonshme. Dhe skedari në të cilin ndodh përfshirja ka përparësi.
Burimi: www.habr.com