Variablat në GitLab mund të vendosen në disa vende:
- Në cilësimet e grupeve
- Në cilësimet e projektit
- Brenda .gitlab-ci.yml
Në këtë mënyrë, variablat në cilësimet e grupeve dhe projekteve mund të vendosen si "skedar" ose "variabël standard" dhe të aktivizohen opsionet "të mbrojtura" dhe "masko".

Le të fillojmë me trashëgiminë e thjeshtë dhe do të bëhet gradualisht më e komplikuar.
Lista përfundimtare e niveleve të prioriteteve mund të shihet në fund të dokumentit.
Trashëgimia me grupe [burimet]
Variablat nga grupet trashëgohen me rregullin se 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 $MSGRezultati i pipeline-it
$ echo $MSG
BNëse variabli nuk do të ishte shënuar në grupin B, do të shihnim vlerën A.
Trashëgimia e variablave brenda .gitlab-ci.yml [burimet]
Këtu gjithçka është mjaft e thjeshtë: mund të vendosni një variabël globalisht, ose ta ri-shkruani brenda punës.
Grupet me variabla

.gitlab-ci.yml
Tani do të krijojmë 2 punë, në një nga to do të përcaktojmë saktësisht $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 $MSGRezultati i pipeline-it
- echo:
$ echo $MSG Custom in global .gitlab-ci.yml Punimi përfundoi me sukses - echo me variabla:
$ echo $MSG Custom in job .gitlab-ci.yml Punimi përfundoi me sukses
Trashëgimia me grupe dhe brenda .gitlab-ci.yml [burimet]
Le të provojmë të kombinojmë dy shembujt e mëparshëm. Variablat e grupeve janë në prioritet mbi variablat 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 $MSGRezultati i pipeline-it
- echo:
$ echo $MSG Y Punimi përfundoi me sukses - echo me variabla:
$ echo $MSG Y Punimi përfundoi me sukses
Trashëgimia me shënim të variablave në cilësimet e projektit [burimet]
Variablat në cilësimet e projektit KANà gjithmonë prioritetin më të lartë! Dhe variablat e përcaktuar brenda .gitlab-ci.yml nuk luajnë asnjë rol.
Grupet me variabla
Variablat e grupeve kanë prioritet më të ulët.

.gitlab-ci.yml
Le të përdorim skedarin nga shembulli i mëparshëm. Këtu ka përsëri, variabla të përcaktuara brenda .gitlab-ci.yml, por variablat brenda grupeve ende kanë prioritet mbi to.
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 $MSGRezultati i pipeline-it
- echo:
$ echo $MSG project-3 Punimi përfundoi me sukses - echo me variabla:
$ echo $MSG project-3 Punimi përfundoi me sukses
Trashëgimia me vlerë të zbrazët [burimet]
Vlera e zbrazët është gjithashtu një vlerë
Vlera e zbrazët 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 $MSGRezultati i pipeline-it
- echo:
$ echo $MSG Punimi përfundoi me sukses - echo me variabla:
$ echo $MSG Punimi përfundoi me sukses
Trashëgimia me përfshirje dhe grupe [burimet]
Këtu do të provojmë të përfshijmë project-3 në project-2
Grupet në këtë rast kanë prioritet.
Grupet me variabla

.gitlab-ci.yml
Dhe do të vendosim një variabël globalisht në .gitlab-ci.yml
variables:
MSG: "Me përfshirje .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'Rezultati i pipeline-it
- echo:
$ echo $MSG B Punimi përfundoi me sukses - echo me variabla:
$ echo $MSG B Punimi përfundoi me sukses
Trashëgimia me përfshirje [burimet]
Këtu do të provojmë të përfshijmë project-3 në project-2.
Me kusht që: as grupi, as vetë projekti nuk kanë variabla.
Grupet me variabla

.gitlab-ci.yml
I njëjtë si në shembullin e mëparshëm
variables:
MSG: "Me përfshirje .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'Rezultati i pipeline-it
- echo:
$ echo $MSG Me përfshirjen .gitlab-ci.yml Puna përfundoi me sukses - echo me variabla:
$ echo $MSG Custom in job .gitlab-ci.yml Punimi përfundoi me sukses
Kemi si rezultat: prioritetet:
- Variablat në cilësimet e projektit
- Variablat në grupe
- Variablat e specifikuara saktësisht brenda punës (përfshirë edhe skedarët e përfshirë)
- Variablat globale brenda .gitlab-ci.yml
- Variablat globale brenda skedarëve të përfshirë
Përfundim
Momentin më të paqartë është se rregulli "sa më afërsisht të jetë një variabël me kodin, aq më i rëndësishëm është" funksionon fillimisht për grupet, dhe pastaj ky rregull është i njëjtë edhe për variablat brenda .gitlab-ci.yml, por vetëm me kushtin që variablat në grupe nuk janë të përcaktuara.
Më pas, një vend i rëndësishëm është kuptimi se hapsira globale për .gitlab-ci.yml kryesore dhe të përfshira është e përbashkët. Dhe ai skedar në të cilin ndodh përfshirja ka prioritet.
Burimi: habr.com
