Varijable u Gitlabu se mogu postaviti na nekoliko mjesta:
- U grupnim postavkama
- U postavkama projekta
- Unutar .gitlab-ci.yml
U ovom slučaju, varijable u grupnim i projektnim postavkama mogu se postaviti kao "datoteka" ili "obična varijabla" i označiti potvrdne okvire "zaštićeno" i "maskirati".
Počnimo s jednostavnim nasljeđivanjem i postepeno će postati složenije.
Konačna lista nivoa prioriteta nalazi se na kraju dokumenta.
Nasljeđivanje sa grupama [izvori]
Varijable iz grupa se nasljeđuju, s tim da što je grupa bliže projektu, to je njena vrijednost važnija.
Grupe sa varijablama
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Rezultat naftovoda
$ echo $MSG
B
Da varijabla nije navedena u grupi B, tada bismo vidjeli vrijednost A.
Nasljeđivanje varijabli unutar .gitlab-ci.yml [izvori]
Ovdje je sve prilično jednostavno: možete postaviti varijablu globalno ili je možete prepisati unutar posla.
Grupe sa varijablama
.gitlab-ci.yml
Kreirajmo sada 2 posla, u jednom od njih ćemo eksplicitno naznačiti $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
Rezultat naftovoda
- eho:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- echo s vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Nasljeđivanje sa grupama i unutar .gitlab-ci.yml [izvori]
Pokušajmo kombinirati prethodna 2 primjera. Grupne varijable imaju prednost nad varijablama unutar .gitlab-ci.yml.
Grupe sa varijablama
.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
Rezultat naftovoda
- eho:
$ echo $MSG Y Job succeeded
- echo s vars:
$ echo $MSG Y Job succeeded
Nasljeđivanje sa specificiranjem varijabli u postavkama projekta [izvori]
Varijable u projektnim postavkama UVIJEK imaju najveći prioritet! A varijable navedene unutar .gitlab-ci.yml ne igraju nikakvu ulogu.
Grupe sa varijablama
Grupne varijable imaju niži prioritet.
.gitlab-ci.yml
Koristimo datoteku iz prethodnog primjera. Ovdje opet postoje varijable specificirane unutar .gitlab-ci.yml, ali varijable unutar grupa i dalje imaju prednost nad njima.
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
Rezultat naftovoda
- eho:
$ echo $MSG project-3 Job succeeded
- echo s vars:
$ echo $MSG project-3 Job succeeded
Nasljeđivanje s praznom vrijednošću [izvori]
Prazna vrijednost je također vrijednost
Prazna vrijednost nije Null
Grupe sa varijablama
.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
Rezultat naftovoda
- eho:
$ echo $MSG Job succeeded
- echo s vars:
$ echo $MSG Job succeeded
Nasljeđivanje sa uključivanjem i grupama [izvori]
Ovdje ćemo pokušati uključiti projekt-2 u projekat-3
Grupe u ovom slučaju imaju prioritet.
Grupe sa varijablama
.gitlab-ci.yml
I postavite varijablu globalno u .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'
Rezultat naftovoda
- eho:
$ echo $MSG B Job succeeded
- echo s vars:
$ echo $MSG B Job succeeded
Nasljeđivanje sa uključivanjem [izvori]
Ovdje ćemo pokušati uključiti projekt-2 u projekat-3.
Uz uslov da: ni grupe ni sam projekat nemaju varijable.
Grupe sa varijablama
.gitlab-ci.yml
Isto kao u prethodnom primjeru
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Rezultat naftovoda
- eho:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- echo s vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Rezultati su sljedeći prioriteti:
- Varijable u postavkama projekta
- Varijable u grupama
- Varijable striktno specificirane unutar poslova (uključujući uključene datoteke)
- Globalne varijable unutar .gitlab-ci.yml
- Globalne varijable unutar uključenih datoteka
zaključak
Najneočiglednija stvar je da pravilo „što je varijabla bliža kodu, to je važnija“ prvo radi za grupe, a zatim isto pravilo za varijable unutar .gitlab-ci.yml, ali samo pod uslovom da varijable u grupama nisu specificirane.
Zatim, važna stvar je razumjeti da je globalni prostor za glavni i uključeni .gitlab-ci.yml uobičajen. Prioritet ima datoteka u kojoj se javlja uključivanje.
izvor: www.habr.com