Hvernig erfir Gitlab-CI umhverfisbreytur?

Hægt er að stilla breytur í Gitlab á nokkrum stöðum:

  1. Í hópstillingum
  2. Í verkefnastillingum
  3. Inni í .gitlab-ci.yml

Í þessu tilviki er hægt að stilla breytur í hópnum og verkefnastillingum sem „skrá“ eða „venjuleg breyta“ og haka við „varið“ og „grímu“ gátreitina.

Hvernig erfir Gitlab-CI umhverfisbreytur?

Byrjum á einföldum erfðum og það verður smám saman flóknara.

Lokalistann yfir forgangsstig er að finna í lok skjalsins.

Erfðir með hópum [heimildir]

Breytur úr hópum erfast, með þeirri reglu að því nær sem hópurinn er staðsettur verkefninu, því mikilvægara er gildi hans.

Hópar með breytum

Hvernig erfir Gitlab-CI umhverfisbreytur?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Niðurstaða leiðslu

$ echo $MSG
B

Ef breytan hefði ekki verið tilgreind í hópi B, þá hefðum við séð gildið A.

Erfir breytur inni í .gitlab-ci.yml [heimildir]

Allt er frekar einfalt hér: þú getur stillt breytu á heimsvísu, eða þú getur skrifað yfir hana inni í vinnunni.

Hópar með breytum

Hvernig erfir Gitlab-CI umhverfisbreytur?

.gitlab-ci.yml

Við skulum nú búa til 2 störf, í einu þeirra munum við skýrt gefa til kynna $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

Niðurstaða leiðslu

  • bergmál:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • echo með vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Erfðir með hópum og inni .gitlab-ci.yml [heimildir]

Við skulum reyna að sameina fyrri 2 dæmin. Hópbreytur ganga framar breytum innan .gitlab-ci.yml.

Hópar með breytum

Hvernig erfir Gitlab-CI umhverfisbreytur?

.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

Niðurstaða leiðslu

  • bergmál:
    $ echo $MSG
    Y
    Job succeeded
  • echo með vars:
    $ echo $MSG
    Y
    Job succeeded

Erfðir með því að tilgreina breytur í verkstillingum [heimildir]

Breytur í verkefnastillingum hafa ALLTAF hæsta forgang! Og breyturnar sem tilgreindar eru inni í .gitlab-ci.yml gegna engu hlutverki.

Hópar með breytum

Hópbreytur hafa lægri forgang.
Hvernig erfir Gitlab-CI umhverfisbreytur?

.gitlab-ci.yml

Við skulum nota skrána frá fyrra dæminu. Hér eru aftur tilgreindar breytur inni í .gitlab-ci.yml, en breytur innan hópa hafa samt forgang yfir þær.

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

Niðurstaða leiðslu

  • bergmál:
    $ echo $MSG
    project-3
    Job succeeded
  • echo með vars:
    $ echo $MSG
    project-3
    Job succeeded

Erfðir með tómu gildi [heimildir]

Tómt gildi er líka gildi
Tómt gildi er ekki Null

Hópar með breytum

Hvernig erfir Gitlab-CI umhverfisbreytur?

.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

Niðurstaða leiðslu

  • bergmál:
    $ echo $MSG
    Job succeeded
  • echo með vars:
    $ echo $MSG
    Job succeeded

Erfðir með innihalda og hópa [heimildir]

Hér verður reynt að taka verkefni-2 inn í verkefni-3
Hópar í þessu tilfelli hafa forgang.

Hópar með breytum

Hvernig erfir Gitlab-CI umhverfisbreytur?

.gitlab-ci.yml

Og stilltu breytuna á heimsvísu í .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'

Niðurstaða leiðslu

  • bergmál:
    $ echo $MSG
    B
    Job succeeded
  • echo með vars:
    $ echo $MSG
    B
    Job succeeded

Erfðir með ma [heimildir]

Hér verður reynt að taka verkefni-2 inn í verkefni-3.
Með því skilyrði að: hvorki hóparnir né verkefnið sjálft hafi neinar breytur.

Hópar með breytum

Hvernig erfir Gitlab-CI umhverfisbreytur?

.gitlab-ci.yml

Sama og í fyrra dæminu

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

Niðurstaða leiðslu

  • bergmál:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • echo með vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Úrslitin eru eftirfarandi forgangsröðun:

  1. Breytur í verkefnastillingum
  2. Breytur í hópum
  3. Breytur sem eru stranglega tilgreindar í verkum (þar á meðal skrár sem fylgja með)
  4. Alþjóðlegar breytur inni í .gitlab-ci.yml
  5. Alþjóðlegar breytur inni í skrám

Ályktun

Ekki augljósasta atriðið er að reglan „því nær sem breyta er kóðanum, því mikilvægari er hún“ virkar fyrst fyrir hópa, og síðan sama reglan fyrir breytur inni í .gitlab-ci.yml, en aðeins undir skilyrðinu að breyturnar í hópunum séu ekki tilgreindar .
Næst er mikilvægt atriði að skilja að alþjóðlegt rými fyrir aðal og innifalið .gitlab-ci.yml er algengt. Og skráin sem skráningin á sér stað í hefur forgang.

Heimild: www.habr.com

Bæta við athugasemd