Si i trashëgon Gitlab-CI variablat e mjedisit?

Variablat në Gitlab mund të vendosen në disa vende:

  1. Në cilësimet e grupit
  2. Në cilësimet e projektit
  3. Brenda .gitlab-ci.yml

Në këtë rast, variablat në grup dhe cilësimet e projektit mund të vendosen si "skedar" ose "ndryshore e rregullt" dhe kontrolloni kutitë e kontrollit "të mbrojtura" dhe "maskë".

Si i trashëgon Gitlab-CI variablat e mjedisit?

Le të fillojmë me trashëgiminë e thjeshtë dhe gradualisht do të bëhet më komplekse.

Lista përfundimtare e niveleve prioritare mund të gjendet në fund të dokumentit.

Trashëgimia me grupe [burimet]

Variablat nga grupet trashëgohen, me rregullin që sa më afër të jetë grupi me projektin, aq më e rëndësishme është vlera e tij.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat e mjedisit?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Rezultati i tubacionit

$ echo $MSG
B

Nëse ndryshorja nuk do të ishte specifikuar në grupin B, atëherë do të kishim parë vlerën A.

Trashëgimi i variablave brenda .gitlab-ci.yml [burimet]

Gjithçka është mjaft e thjeshtë këtu: mund të vendosni një variabël globalisht, ose mund ta mbishkruani brenda punës.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat e mjedisit?

.gitlab-ci.yml

Le të krijojmë tani 2 vende pune, në njërën prej tyre do të tregojmë në mënyrë eksplicite $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

Rezultati i tubacionit

  • jehonë:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • jehonë me vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Trashëgimia me grupe dhe brenda .gitlab-ci.yml [burimet]

Le të përpiqemi të kombinojmë 2 shembujt e mëparshëm. Variablat e grupit kanë përparësi ndaj variablave brenda .gitlab-ci.yml.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat e mjedisit?

.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

Rezultati i tubacionit

  • jehonë:
    $ echo $MSG
    Y
    Job succeeded
  • jehonë me vars:
    $ echo $MSG
    Y
    Job succeeded

Trashëgimia me specifikimin e variablave në cilësimet e projektit [burimet]

Variablat në cilësimet e projektit kanë GJITHMONË prioritetin më të lartë! Dhe variablat e specifikuara brenda .gitlab-ci.yml nuk luajnë asnjë rol.

Grupet me variabla

Variablat e grupit kanë prioritet më të ulët.
Si i trashëgon Gitlab-CI variablat e mjedisit?

.gitlab-ci.yml

Le të përdorim skedarin nga shembulli i mëparshëm. Këtu përsëri ka variabla të specifikuar brenda .gitlab-ci.yml, por variablat brenda grupeve ende kanë përparësi ndaj tyre.

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

Rezultati i tubacionit

  • jehonë:
    $ echo $MSG
    project-3
    Job succeeded
  • jehonë me vars:
    $ echo $MSG
    project-3
    Job succeeded

Trashëgimia me vlerë boshe [burimet]

Një vlerë boshe është gjithashtu një vlerë
Një vlerë boshe nuk është Null

Grupet me variabla

Si i trashëgon Gitlab-CI variablat e mjedisit?

.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

Rezultati i tubacionit

  • jehonë:
    $ echo $MSG
    Job succeeded
  • jehonë me vars:
    $ echo $MSG
    Job succeeded

Trashëgimia me përfshirje dhe grupe [burimet]

Këtu do të përpiqemi të përfshijmë projektin-2 në projektin-3
Grupet në këtë rast kanë përparësi.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat e mjedisit?

.gitlab-ci.yml

Dhe vendoseni variablin globalisht në .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'

Rezultati i tubacionit

  • jehonë:
    $ echo $MSG
    B
    Job succeeded
  • jehonë me vars:
    $ echo $MSG
    B
    Job succeeded

Trashegimia me perfshi [burimet]

Këtu do të përpiqemi të përfshijmë projektin-2 në projektin-3.
Me kushtin që: as grupet dhe as vetë projekti të mos kenë variabla.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat e mjedisit?

.gitlab-ci.yml

Njëlloj si në shembullin e mëparshëm

variables:
 MSG: "With  include  .gitlab-ci.yml"
include:
 - project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
   file: '.gitlab-ci.yml'

Rezultati i tubacionit

  • jehonë:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • jehonë me vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Rezultatet janë si më poshtë prioritetet:

  1. Variablat në cilësimet e projektit
  2. Variablat në grupe
  3. Variablat e specifikuar rreptësisht brenda punëve (përfshirë skedarët e përfshirë)
  4. Variablat globalë brenda .gitlab-ci.yml
  5. Ndryshoret globale brenda skedarëve të përfshirë

Përfundim

Pika më jo e dukshme është se rregulli "sa më afër kodit të jetë një variabël, aq më i rëndësishëm është" funksionon fillimisht për grupet, dhe më pas i njëjti rregull për variablat brenda .gitlab-ci.yml, por vetëm nën kushtin se variablat në grupe nuk janë të specifikuara.
Më pas, një pikë e rëndësishme është të kuptojmë se hapësira globale për .gitlab-ci.yml kryesore dhe të përfshirë është e zakonshme. Dhe skedari në të cilin ndodh përfshirja ka përparësi.

Burimi: www.habr.com

Shto një koment