Si i trashëgon Gitlab-CI variablat mjedisorë?

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

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

Në këtë mënyrë, variablat në cilësimet e grupeve dhe projekteve mund të vendosen si "skedar" ose "variabël standard" dhe të aktivizohen opsionet "të mbrojtura" dhe "masko".

Si i trashëgon Gitlab-CI variablat mjedisorë?

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

Lista përfundimtare e niveleve të prioriteteve mund të shihet në fund të dokumentit.

Trashëgimia me grupe [burimet]

Variablat nga grupet trashëgohen me rregullin se 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 mjedisorë?

.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 shënuar në grupin B, do të shihnim vlerën A.

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

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

Grupet me variabla

Si i trashëgon Gitlab-CI variablat mjedisorë?

.gitlab-ci.yml

Tani do të krijojmë 2 punë, në një nga to do të përcaktojmë saktësisht $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 pipeline-it

  • echo:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Punimi përfundoi me sukses
  • echo me variabla:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Punimi përfundoi me sukses

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

Le të provojmë të kombinojmë dy shembujt e mëparshëm. Variablat e grupeve janë në prioritet mbi variablat brenda .gitlab-ci.yml.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat mjedisorë?

.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 pipeline-it

  • echo:
    $ echo $MSG
    Y
    Punimi përfundoi me sukses
  • echo me variabla:
    $ echo $MSG
    Y
    Punimi përfundoi me sukses

Trashëgimia me shënim të variablave në cilësimet e projektit [burimet]

Variablat nĂ« cilĂ«simet e projektit KANË gjithmonĂ« prioritetin mĂ« tĂ« lartĂ«! Dhe variablat e pĂ«rcaktuar brenda .gitlab-ci.yml nuk luajnĂ« asnjĂ« rol.

Grupet me variabla

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

.gitlab-ci.yml

Le të përdorim skedarin nga shembulli i mëparshëm. Këtu ka përsëri, variabla të përcaktuara brenda .gitlab-ci.yml, por variablat brenda grupeve ende kanë prioritet mbi to.

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 pipeline-it

  • echo:
    $ echo $MSG
    project-3
    Punimi përfundoi me sukses
  • echo me variabla:
    $ echo $MSG
    project-3
    Punimi përfundoi me sukses

Trashëgimia me vlerë të zbrazët [burimet]

Vlera e zbrazët është gjithashtu një vlerë
Vlera e zbrazët nuk është Null

Grupet me variabla

Si i trashëgon Gitlab-CI variablat mjedisorë?

.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 pipeline-it

  • echo:
    $ echo $MSG
    Punimi përfundoi me sukses
  • echo me variabla:
    $ echo $MSG
    Punimi përfundoi me sukses

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

Këtu do të provojmë të përfshijmë project-3 në project-2
Grupet në këtë rast kanë prioritet.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat mjedisorë?

.gitlab-ci.yml

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

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

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    B
    Punimi përfundoi me sukses
  • echo me variabla:
    $ echo $MSG
    B
    Punimi përfundoi me sukses

Trashëgimia me përfshirje [burimet]

Këtu do të provojmë të përfshijmë project-3 në project-2.
Me kusht që: as grupi, as vetë projekti nuk kanë variabla.

Grupet me variabla

Si i trashëgon Gitlab-CI variablat mjedisorë?

.gitlab-ci.yml

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

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

Rezultati i pipeline-it

  • echo:
    $ echo $MSG
    Me përfshirjen .gitlab-ci.yml
    Puna përfundoi me sukses
  • echo me variabla:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Punimi përfundoi me sukses

Kemi si rezultat: prioritetet:

  1. Variablat në cilësimet e projektit
  2. Variablat në grupe
  3. Variablat e specifikuara saktësisht brenda punës (përfshirë edhe skedarët e përfshirë)
  4. Variablat globale brenda .gitlab-ci.yml
  5. Variablat globale brenda skedarëve të përfshirë

Përfundim

Momentin më të paqartë është se rregulli "sa më afërsisht të jetë një variabël me kodin, aq më i rëndësishëm është" funksionon fillimisht për grupet, dhe pastaj ky rregull është i njëjtë edhe për variablat brenda .gitlab-ci.yml, por vetëm me kushtin që variablat në grupe nuk janë të përcaktuara.
Më pas, një vend i rëndësishëm është kuptimi se hapsira globale për .gitlab-ci.yml kryesore dhe të përfshira është e përbashkët. Dhe ai skedar në të cilin ndodh përfshirja ka prioritet.

Burimi: habr.com

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