Gitlabis saab muutujaid määrata mitmes kohas:
- Rühma seadetes
- Projektide seadetes
- Failis .gitlab-ci.yml
Samas saab rühma ja projekti seadetes määrata muutujad kui „fail” või „tavaline muutuja” ning märkida valikuid „kaitstud” ja „maskeeritud”.

Alustame lihtsast pärandamisest ja keerame seda järk-järgult keerulisemaks.
Lõpliku prioriteetide loetelu saab vaadata dokumendi lõpus.
Pärimine rühmade abil [allikad]
Rühmades määratud muutujad pärinevad, järgides reeglit, et mida lähemal on rühm projektile, seda olulisem on selle väärtus.
Rühmad koos muutujaid

.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSGPipelinesi tulemus
$ echo $MSG
BKui muutuja poleks rühmas B määratud, oleksime näinud väärtust A.
Muutujate pärimine .gitlab-ci.yml sees [allikad]
Siin on kõik üsna lihtne: saad määrata muutuja globaalsetena või kirjutada selle töö sees üle.
Rühmad koos muutujaid

.gitlab-ci.yml
Loome nüüd 2 tööd, millest ühes määrame selgelt $MSG.
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Kohandatud globaalses .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Kohandatud töö .gitlab-ci.yml"
script:
- echo $MSGPipelinesi tulemus
- echo:
$ echo $MSG Kohandatud globaalsetes .gitlab-ci.yml Töö õnnestus - echo koos muutujaid:
$ echo $MSG Kohandatud töö .gitlab-ci.yml Töö õnnestus
Pärimine rühmadest ja .gitlab-ci.yml sees [allikad]
Proovime ühendada eelnevaid 2 näidet. Rühma muutujad on eelised muutuja üle .gitlab-ci.yml.
Rühmad koos muutujaid

.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Kohandatud globaalses .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Kohandatud töö .gitlab-ci.yml"
script:
- echo $MSGPipelinesi tulemus
- echo:
$ echo $MSG Y Töö õnnestus - echo koos muutujaid:
$ echo $MSG Y Töö õnnestus
Muutujate pärimine projekti seadetes [allikad]
Muutujad projekti seadetes on ALATI kõrgeima prioriteediga! Ja .gitlab-ci.yml sees määratud muutujatel pole mingit rolli.
Rühmad koos muutujaid
Rühma muutujatel on madalam prioriteet.

.gitlab-ci.yml
Kasutame eelnevas näites olevaid faile. Siin on jälle muutujad, mis on määratud .gitlab-ci.yml sees, kuid rühmade muutujatel on endiselt nende ees prioriteet.
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Kohandatud globaalses .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Kohandatud töö .gitlab-ci.yml"
script:
- echo $MSGPipelinesi tulemus
- echo:
$ echo $MSG projekt-3 Töö õnnestus - echo koos muutujaid:
$ echo $MSG projekt-3 Töö õnnestus
Pärimine tühja väärtusega [allikad]
Tühi väärtus on samuti väärtus
Tühi väärtus ei ole Null
Rühmad koos muutujaid

.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
MSG: "Kohandatud globaalses .gitlab-ci.yml"
echo:
stage: test
script:
- echo $MSG
echo with var:
stage: test
variables:
MSG: "Kohandatud töö .gitlab-ci.yml"
script:
- echo $MSGPipelinesi tulemus
- echo:
$ echo $MSG Töö õnnestus - echo koos muutujaid:
$ echo $MSG Töö õnnestus
Pärimine lisamise ja rühmadega [allikad]
Siin proovime project-2-sse lisada project-3
Rühmadel on sel juhul prioriteet.
Rühmad koos muutujaid

.gitlab-ci.yml
Ja määrame muutuja globaalset .gitlab-ci.yml
variables:
MSG: "Koos lisamisega .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'Pipelinesi tulemus
- echo:
$ echo $MSG B Töö õnnestus - echo koos muutujaid:
$ echo $MSG B Töö õnnestus
Pärimine lisamisega [allikad]
Siin proovime project-2-sse sisse tuua project-3.
Eeldusel, et ei rühmadel ega projektil endal ei ole mingeid muutujaid.
Rühmad koos muutujaid

.gitlab-ci.yml
Sama nagu eelnevas näites
variables:
MSG: "Koos lisamisega .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'Pipelinesi tulemus
- echo:
$ echo $MSG Include .gitlab-ci.yml Töö õnnestus - echo koos muutujaid:
$ echo $MSG Kohandatud töö .gitlab-ci.yml Töö õnnestus
Saame järgmised prioriteedid:
- Muutujad projekti seadetes
- Muutujad rühmades
- Töös rangelt määratletud muutujad (kaasa arvatud sisse toodud failid)
- Globaalsete muutujate väärtused .gitlab-ci.yml failis
- Globaalsete muutujate väärtused sisse toodud failides
Kokkuvõte
Kõige vähem ilmne moment on see, et reegel «mida lähemal muutuja koodile, seda olulisem» kehtib kõigepealt rühmade jaoks ja seejärel kehtib sama reegel ka .gitlab-ci.yml failide muutujate kohta, kuid tingimusel, et rühmades ei ole muutujaid määratletud.
Edasi on oluline mõista, et globaalne ruum põhifaili ja sisse toodud .gitlab-ci.yml jaoks on ühine. Ja see fail, kuhu sisse tuuakse, omab prioriteeti.
Allikas: habr.com
