Veranderlikes in Gitlab kan op verskeie plekke ingestel word:
- In groepinstellings
- In die projek instellings
- Binne .gitlab-ci.yml
In hierdie geval kan veranderlikes in die groep- en projekinstellings gestel word as "lΓͺer" of "gewone veranderlike" en merk die "beskermde" en "masker"-merkblokkies.
Kom ons begin met eenvoudige oorerwing en dit sal geleidelik meer kompleks word.
Die finale lys van prioriteitsvlakke kan aan die einde van die dokument gevind word.
Oorerwing met groepe [bronne]
Veranderlikes van groepe word geΓ«rf, met die reΓ«l dat hoe nader die groep aan die projek geleΓ« is, hoe belangriker is die waarde daarvan.
Groepe met veranderlikes
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Pyplyn resultaat
$ echo $MSG
B
As die veranderlike nie in groep B gespesifiseer was nie, sou ons die waarde A gesien het.
Erf veranderlikes binne .gitlab-ci.yml [bronne]
Alles is redelik eenvoudig hier: jy kan 'n veranderlike wΓͺreldwyd stel, of jy kan dit binne die werk oorskryf.
Groepe met veranderlikes
.gitlab-ci.yml
Kom ons skep nou 2 werksgeleenthede, in een van hulle sal ons uitdruklik $MSG aandui.
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
Pyplyn resultaat
- eggo:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- eggo met vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Oorerwing met groepe en binne .gitlab-ci.yml [bronne]
Kom ons probeer om die vorige 2 voorbeelde te kombineer. Groepveranderlikes geniet voorrang bo veranderlikes binne .gitlab-ci.yml.
Groepe met veranderlikes
.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
Pyplyn resultaat
- eggo:
$ echo $MSG Y Job succeeded
- eggo met vars:
$ echo $MSG Y Job succeeded
Oorerwing met spesifiseer veranderlikes in projek instellings [bronne]
Veranderlikes in projekinstellings het ALTYD die hoogste prioriteit! En die veranderlikes wat in .gitlab-ci.yml gespesifiseer word, speel geen rol nie.
Groepe met veranderlikes
Groepveranderlikes het laer prioriteit.
.gitlab-ci.yml
Kom ons gebruik die lΓͺer van die vorige voorbeeld. Hier is daar weer veranderlikes binne .gitlab-ci.yml gespesifiseer, maar veranderlikes binne groepe geniet steeds voorrang bo hulle.
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
Pyplyn resultaat
- eggo:
$ echo $MSG project-3 Job succeeded
- eggo met vars:
$ echo $MSG project-3 Job succeeded
Erfenis met leΓ« waarde [bronne]
'n LeΓ« waarde is ook 'n waarde
'n LeΓ« waarde is nie Nul nie
Groepe met veranderlikes
.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
Pyplyn resultaat
- eggo:
$ echo $MSG Job succeeded
- eggo met vars:
$ echo $MSG Job succeeded
Erfenis met insluit en groepe [bronne]
Hier sal ons probeer om projek-2 by projek-3 in te sluit
Groepe in hierdie geval het prioriteit.
Groepe met veranderlikes
.gitlab-ci.yml
En stel die veranderlike globaal in .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'
Pyplyn resultaat
- eggo:
$ echo $MSG B Job succeeded
- eggo met vars:
$ echo $MSG B Job succeeded
Erfenis met insluit [bronne]
Hier sal ons probeer om projek-2 by projek-3 in te sluit.
Met die voorwaarde dat: nie die groepe of die projek self enige veranderlikes het nie.
Groepe met veranderlikes
.gitlab-ci.yml
Dieselfde as in die vorige voorbeeld
variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
Pyplyn resultaat
- eggo:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- eggo met vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
Die resultate is soos volg prioriteite:
- Veranderlikes in projekinstellings
- Veranderlikes in groepe
- Veranderlikes streng gespesifiseer binne werke (insluitend lΓͺers wat ingesluit is)
- Globale veranderlikes binne .gitlab-ci.yml
- Globale veranderlikes binne ingesluit lΓͺers
Gevolgtrekking
Die mees nie ooglopende punt is dat die reΓ«l "hoe nader 'n veranderlike aan die kode is, hoe belangriker is dit" eers vir groepe werk, en dan dieselfde reΓ«l vir veranderlikes binne .gitlab-ci.yml, maar slegs onder die voorwaarde dat die veranderlikes in die groepe nie gespesifiseer is nie.
Vervolgens is 'n belangrike punt om te verstaan ββdat die globale ruimte vir die hoof- en ingeslote .gitlab-ci.yml algemeen is. En die lΓͺer waarin die insluiting plaasvind, het prioriteit.
Bron: will.com