Si GitLab CI trashëgon variablat mjedisore?

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

  1. NĂ« konfigurimet e grupeve
  2. NĂ« konfigurimet e projektit
  3. Brenda .gitlab-ci.yml

Në këtë mënyrë, variablat në konfigurimet e grupeve dhe të projekteve mund të vendosen si "skedë" ose "variabël normale" dhe të aktivizohen opsionet "të mbrojtur" dhe "maskë".

Si GitLab CI trashëgon variablat mjedisore?

Të fillojmë me trashëgiminë e thjeshtë dhe do të complicohet gradualisht.

Një listë përfundimtare të niveleve të prioriteteve mund të gjendet në fund të dokumentit.

Trashëgimi me grupe [burimet]

Variablave nga grupet u jepe vlen, me rregullin se sa më afër grupi të jetë projekti, aq më e rëndësishme është vlera e saj.

Grupet me variabla

Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Rezultati i pipeline-it

$ echo $MSG
B

Nëse variabli nuk do të ishte specifikuar në grupin B, ne do të shihnim vlerën A.

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

Këtu gjithçka është mjaft e thjeshtë: mund të vendosni një variabël globalisht, ose ta tejkaloni atë brenda punës.

Grupet me variabla

Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

Tani do të krijojmë 2 punë, në një prej tyre do të specifikojmë qartë $MSG.

imazh: busybox:latest
variabla:
  GIT_STRATEGY: none
  MSG: "Personalizuar në .gitlab-ci.yml globale"

echo:
  faza: test
  skripti:
    - echo $MSG

echo me var:
  faza: test
  variabla:
    MSG: "Personalizuar në .gitlab-ci.yml të punës"
  skripti:
    - echo $MSG

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    Personalizuar në .gitlab-ci.yml globale
    Punë e suksesshme
  • echo me vars:
    $ echo $MSG
    Personalizuar në .gitlab-ci.yml të punës
    Punë e suksesshme

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

Le të përpiqemi të bashkojmë dy shembujt e mëparshëm. Variablat e grupeve kanë përparësi mbi variablat brenda .gitlab-ci.yml.

Grupet me variabla

Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

imazh: busybox:latest
variabla:
  GIT_STRATEGY: none
  MSG: "Personalizuar në .gitlab-ci.yml globale"

echo:
  faza: test
  skripti:
    - echo $MSG

echo me var:
  faza: test
  variabla:
    MSG: "Personalizuar në .gitlab-ci.yml të punës"
  skripti:
    - echo $MSG

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    Y
    Punë e suksesshme
  • echo me vars:
    $ echo $MSG
    Y
    Punë e suksesshme

Trashëgimia me përcaktimin e variablave në konfigurimet e projektit [burimet]

Variablat nĂ« konfigurimet e projektit KANË gjithmonĂ« pĂ«rparĂ«si mĂ« tĂ« lartĂ«! Dhe variablat e pĂ«rcaktuara brenda .gitlab-ci.yml nuk luajnĂ« asnjĂ« rol.

Grupet me variabla

Variablat e grupeve kanë përparësi më të ulët.
Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

Do të përdorim skedarin nga shembulli i mëparshëm. Këtu prapë ka variabla të përcaktuar brenda .gitlab-ci.yml, por variablat brenda grupeve përsëri kanë përparësi mbi ata.

imazh: busybox:latest
variabla:
  GIT_STRATEGY: none
  MSG: "Personalizuar në .gitlab-ci.yml globale"

echo:
  faza: test
  skripti:
    - echo $MSG

echo me var:
  faza: test
  variabla:
    MSG: "Personalizuar në .gitlab-ci.yml të punës"
  skripti:
    - echo $MSG

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    project-3
    Punë e suksesshme
  • echo me vars:
    $ echo $MSG
    project-3
    Punë e suksesshme

Trashëgimia me vlera bosh [burimet]

Vlera bosh – Ă«shtĂ« gjithashtu njĂ« vlerĂ«
Vlera bosh – nuk Ă«shtĂ« Null

Grupet me variabla

Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

imazh: busybox:latest
variabla:
  GIT_STRATEGY: none
  MSG: "Personalizuar në .gitlab-ci.yml globale"

echo:
  faza: test
  skripti:
    - echo $MSG

echo me var:
  faza: test
  variabla:
    MSG: "Personalizuar në .gitlab-ci.yml të punës"
  skripti:
    - echo $MSG

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    Punë e suksesshme
  • echo me vars:
    $ echo $MSG
    Punë e suksesshme

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

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

Grupet me variabla

Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

Dhe do të caktosh një variabël globalisht në .gitlab-ci.yml

variablat:
 MSG: "Me përfshirë .gitlab-ci.yml"
include:
 - projekt: si-është-gitlab-ci-dëgjo-variablat-e-mjedisit/z/y/projekti-3
   file: '.gitlab-ci.yml'

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    B
    Punimi u krye me sukses
  • echo me vars:
    $ echo $MSG
    B
    Punimi u krye me sukses

Trashëgimia me përfshirje [burimet]

Këtu do të përpiqemi të përfshijmë projektin-3 në projekt-2.
Me kusht që: as grupi, as projekti vetë të mos kenë variabla.

Grupet me variabla

Si GitLab CI trashëgon variablat mjedisore?

.gitlab-ci.yml

I njëjtë si në shembullin e mëparshëm

variablat:
 MSG: "Me përfshirë .gitlab-ci.yml"
include:
 - projekt: si-është-gitlab-ci-dëgjo-variablat-e-mjedisit/z/y/projekti-3
   file: '.gitlab-ci.yml'

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    Me përfshirë .gitlab-ci.yml
    Punimi u krye me sukses
  • echo me vars:
    $ echo $MSG
    Personalizuar në .gitlab-ci.yml të punës
    Punë e suksesshme

Rezultojnë siç vijon prioritetet:

  1. Variablat në cilësimet e projektit
  2. Variablat në grupe
  3. Variablat e përcaktuara në mënyrë strikte brenda punës (përfshirë dhe skedarët e përfshirë)
  4. Variablat globale brenda .gitlab-ci.yml
  5. Variablat globale brenda skedarëve të përfshirë

Përfundimi

Pika më pak e dukshme është se rregulli 'sa më afër variablës me kodin, aq më e rëndësishme' funksionon fillimisht për grupet, dhe pastaj të njëjtin rregull për variablat brenda .gitlab-ci.yml, por vetëm me kushtin që variablat në grupe të mos jenë të caktuara.
Një vend tjetër i rëndësishëm është kuptimi se hapësira globale për .gitlab-ci.yml kryesore dhe të përfshirë është e përbashkët. Dhe skedari në të cilin ndodhet përfshirja ka prioritet.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster