Hogyan örökli a Gitlab-CI a környezeti változókat?

A Gitlabban a változókat több helyen is beállíthatjuk:

  1. A csoportbeállításokban
  2. A projektbeállításokban
  3. A .gitlab-ci.yml fájlban

Ezekben a csoport- és projektbeállításokban a változókat «fájl» vagy «normál változó» formájában is beállíthatjuk, valamint kaphatnak «védett» és «maszkos» jelölőnégyzetet.

Hogyan örökli a Gitlab-CI a környezeti változókat?

Kezdjük egy egyszerű örökléssel, és fokozatosan bonyolítjuk.

A prioritási szintek végső listáját a dokumentum végén találhatja.

Öröklés csoportokkal [források]

A csoportokból származó változók öröklődnek, azzal a szabállyal, hogy minél közelebb van a csoport a projekthez, annál fontosabb a változó értéke.

Csoportok változókkal

Hogyan örökli a Gitlab-CI a környezeti változókat?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

A pipeline eredménye

$ echo $MSG
B

Ha a változó nem lett volna megadva a B csoportban, akkor A értékét láthattuk volna.

Változók öröklése a .gitlab-ci.yml fájlban [források]

Itt minden elég egyszerű: beállíthatunk egy globális változót, vagy felülírhatjuk azt a munka alatt.

Csoportok változókkal

Hogyan örökli a Gitlab-CI a környezeti változókat?

.gitlab-ci.yml

Most hozzunk létre 2 munkát, az egyiken világosan megadva a $MSG változót.

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

A pipeline eredménye

  • echo:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    A munka sikeresen befejeződött
  • echo with vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    A munka sikeresen befejeződött

Öröklés csoportokkal és a .gitlab-ci.yml fájlban [források]

Próbáljuk meg egyesíteni az előző 2 példát. A csoportok változói prioritást élveznek a .gitlab-ci.yml fájlban levő változókkal szemben.

Csoportok változókkal

Hogyan örökli a Gitlab-CI a környezeti változókat?

.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

A pipeline eredménye

  • echo:
    $ echo $MSG
    Y
    A munka sikeresen befejeződött
  • echo with vars:
    $ echo $MSG
    Y
    A munka sikeresen befejeződött

Öröklés a projektbeállításokban megadott változókkal [források]

A projektbeállításokban a változók MINDIG a legmagasabb prioritást élvezik! A .gitlab-ci.yml fájlban megadott változóknak nincs szerepe.

Csoportok változókkal

A csoportok változói alacsonyabb prioritásúak.
Hogyan örökli a Gitlab-CI a környezeti változókat?

.gitlab-ci.yml

Használjuk az előző példa fájlját. Itt ismét megtalálhatóak a .gitlab-ci.yml fájlban megadott változók, de a csoportban levő változók még mindig prioritást élveznek.

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

A pipeline eredménye

  • echo:
    $ echo $MSG
    project-3
    A munka sikeresen befejeződött
  • echo with vars:
    $ echo $MSG
    project-3
    A munka sikeresen befejeződött

Öröklés üres értékkel [források]

Az üres érték is egy érték
Az üres érték nem Null

Csoportok változókkal

Hogyan örökli a Gitlab-CI a környezeti változókat?

.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

A pipeline eredménye

  • echo:
    $ echo $MSG
    A munka sikeresen befejeződött
  • echo with vars:
    $ echo $MSG
    A munka sikeresen befejeződött

Öröklés include-dal és csoportokkal [források]

Itt megpróbáljuk a project-2-ben behozni a project-3-at
A csoportok ebben az esetben prioritást élveznek.

Csoportok változókkal

Hogyan örökli a Gitlab-CI a környezeti változókat?

.gitlab-ci.yml

És beállítunk egy változót globálisan a .gitlab-ci.yml fájlban

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

A pipeline eredménye

  • echo:
    $ echo $MSG
    B
    A munka sikeresen befejeződött
  • echo with vars:
    $ echo $MSG
    B
    A munka sikeresen befejeződött

Öröklés include-dal [források]

Itt megpróbáljuk a project-2-ben behozni a project-3-at.
A feltétel az, hogy se a csoport, se a projekt nem rendelkezik változókkal.

Csoportok változókkal

Hogyan örökli a Gitlab-CI a környezeti változókat?

.gitlab-ci.yml

Ugyanaz, mint az előző példában.

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

A pipeline eredménye

  • echo:
    $ echo $MSG
    Include .gitlab-ci.yml
    A munka sikeresen befejeződött.
  • echo with vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    A munka sikeresen befejeződött

A következők jönnek létre. prioritások:

  1. Változók a projektbeállításokban
  2. Változók a csoportokban
  3. Változók, melyek szigorúan a munkahelyen meg vannak határozva (beleértve a beillesztett fájlokat is)
  4. Globális változók a .gitlab-ci.yml fájlban
  5. Globális változók a beillesztett fájlokban

Zárás

A legkevésbé nyilvánvaló pont az, hogy a szabály, miszerint "minél közelebb van a változó a kódhoz, annál fontosabb" először a csoportokra vonatkozik, majd ugyanez a szabály vonatkozik a .gitlab-ci.yml fájlban lévő változókra, de csak abban az esetben, ha a csoportokban nem vannak megadva változók.
A következő fontos dolog az, hogy a globális tér az alapértelmezett és a beillesztett .gitlab-ci.yml fájl esetében közös. És az a fájl, amelybe beillesztés történik, prioritást élvez.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster