Hoe erf Gitlab-CI omgewingsveranderlikes?

Veranderlikes in Gitlab kan op verskeie plekke ingestel word:

  1. In groepinstellings
  2. In die projek instellings
  3. 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.

Hoe erf Gitlab-CI omgewingsveranderlikes?

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

Hoe erf Gitlab-CI omgewingsveranderlikes?

.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

Hoe erf Gitlab-CI omgewingsveranderlikes?

.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

Hoe erf Gitlab-CI omgewingsveranderlikes?

.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.
Hoe erf Gitlab-CI omgewingsveranderlikes?

.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

Hoe erf Gitlab-CI omgewingsveranderlikes?

.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

Hoe erf Gitlab-CI omgewingsveranderlikes?

.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

Hoe erf Gitlab-CI omgewingsveranderlikes?

.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:

  1. Veranderlikes in projekinstellings
  2. Veranderlikes in groepe
  3. Veranderlikes streng gespesifiseer binne werke (insluitend lΓͺers wat ingesluit is)
  4. Globale veranderlikes binne .gitlab-ci.yml
  5. 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

Voeg 'n opmerking