Gitlab mainīgos var iestatīt vairākās vietās:
- Grupas iestatījumos
- Projekta iestatījumos
- Iekšpusē .gitlab-ci.yml
Šajā gadījumā mainīgos lielumus grupas un projekta iestatījumos var iestatīt kā “fails” vai “parastais mainīgais” un atzīmēt izvēles rūtiņas “aizsargāts” un “maska”.
Sāksim ar vienkāršu mantojumu, un tas pakāpeniski kļūs sarežģītāks.
Galīgais prioritāšu līmeņu saraksts ir atrodams dokumenta beigās.
Mantojums ar grupām [avoti]
Mainīgie lielumi no grupām tiek mantoti ar noteikumu, ka jo tuvāk grupa atrodas projektam, jo svarīgāka ir tās vērtība.
Grupas ar mainīgajiem
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Cauruļvada rezultāts
$ echo $MSG
B
Ja mainīgais nebūtu norādīts grupā B, tad mēs būtu redzējuši vērtību A.
Mainīgo mantošana failā .gitlab-ci.yml [avoti]
Šeit viss ir pavisam vienkārši: mainīgo var iestatīt globāli vai pārrakstīt darba ietvaros.
Grupas ar mainīgajiem
.gitlab-ci.yml
Tagad izveidosim 2 darba vietas, vienā no tām skaidri norādīsim $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
Cauruļvada rezultāts
- atbalss:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- atbalss ar vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Mantojums ar grupām un iekšpusē .gitlab-ci.yml [avoti]
Mēģināsim apvienot iepriekšējos 2 piemērus. Grupas mainīgajiem ir prioritāte pār mainīgajiem .gitlab-ci.yml.
Grupas ar mainīgajiem
.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
Cauruļvada rezultāts
- atbalss:
$ echo $MSG Y Job succeeded
- atbalss ar vars:
$ echo $MSG Y Job succeeded
Mantojums, norādot mainīgos lielumus projekta iestatījumos [avoti]
Projekta iestatījumu mainīgajiem VIENMĒR ir augstākā prioritāte! Un mainīgie, kas norādīti .gitlab-ci.yml, nespēlē nekādu lomu.
Grupas ar mainīgajiem
Grupas mainīgajiem ir zemāka prioritāte.
.gitlab-ci.yml
Izmantosim failu no iepriekšējā piemēra. Šeit atkal ir norādīti mainīgie, kas norādīti .gitlab-ci.yml, bet mainīgie grupās joprojām ir prioritāri pār tiem.
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
Cauruļvada rezultāts
- atbalss:
$ echo $MSG project-3 Job succeeded
- atbalss ar vars:
$ echo $MSG project-3 Job succeeded
Mantojums ar tukšu vērtību [avoti]
Tukša vērtība arī ir vērtība
Tukša vērtība nav Null
Grupas ar mainīgajiem
.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
Cauruļvada rezultāts
- atbalss:
$ echo $MSG Job succeeded
- atbalss ar vars:
$ echo $MSG Job succeeded
Mantojums ar iekļautu un grupām [avoti]
Šeit mēs centīsimies iekļaut projektu-2 projektā-3
Grupām šajā gadījumā ir prioritāte.
Grupas ar mainīgajiem
.gitlab-ci.yml
Un iestatiet mainīgo globāli .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'
Cauruļvada rezultāts
- atbalss:
$ echo $MSG B Job succeeded
- atbalss ar vars:
$ echo $MSG B Job succeeded
Mantojums ar iekļautu [avoti]
Šeit mēs centīsimies iekļaut projektu-2 projektā-3.
Ar nosacījumu, ka: ne grupām, ne pašam projektam nav nekādu mainīgo.
Grupas ar mainīgajiem
.gitlab-ci.yml
Tas pats, kas iepriekšējā piemērā
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Cauruļvada rezultāts
- atbalss:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- atbalss ar vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Rezultāti ir šādi prioritātes:
- Mainīgie lielumi projekta iestatījumos
- Mainīgie lielumi grupās
- Darbos stingri norādīti mainīgie (tostarp iekļautie faili)
- Globālie mainīgie .gitlab-ci.yml
- Globālie mainīgie iekļautajos failos
Secinājums
Visneredzamākais ir tas, ka noteikums “jo tuvāk mainīgais ir kodam, jo svarīgāks tas ir” vispirms darbojas grupām un pēc tam tas pats noteikums mainīgajiem .gitlab-ci.yml, bet tikai ar nosacījumu. ka grupās nav norādīti mainīgie .
Tālāk ir svarīgi saprast, ka globālā telpa galvenajam un iekļautajam .gitlab-ci.yml ir izplatīta. Un failam, kurā notiek iekļaušana, ir prioritāte.
Avots: www.habr.com