Hoe erft Gitlab-CI omjouwingsfariabelen?

Fariabelen yn Gitlab kinne op ferskate plakken ynsteld wurde:

  1. Yn groepynstellingen
  2. Yn 'e projektynstellingen
  3. Binnen .gitlab-ci.yml

Yn dit gefal kinne fariabelen yn 'e groep- en projektynstellingen ynsteld wurde as "bestĂąn" of "gewoane fariabele" en kontrolearje de karfakjes "beskerme" en "masker".

Hoe erft Gitlab-CI omjouwingsfariabelen?

Litte wy begjinne mei ienfĂąldige erfenis en it sil stadichoan komplekser wurde.

De definitive list mei prioriteitsnivo's is te finen oan 'e ein fan it dokumint.

Erfskip mei groepen [boarnen]

Fariabelen Ășt groepen wurde erfd, mei de regel dat hoe tichter de groep leit by it projekt, hoe wichtiger de wearde is.

Groepen mei fariabelen

Hoe erft Gitlab-CI omjouwingsfariabelen?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Pipeline resultaat

$ echo $MSG
B

As de fariabele net spesifisearre wie yn groep B, dan soene wy ​​​​de wearde A sjoen hawwe.

Ynheriting fariabelen binnen .gitlab-ci.yml [boarnen]

Alles is hjir frij simpel: jo kinne in fariabele globaal ynstelle, of jo kinne it oerskriuwe yn 'e baan.

Groepen mei fariabelen

Hoe erft Gitlab-CI omjouwingsfariabelen?

.gitlab-ci.yml

Litte wy no 2 banen oanmeitsje, yn ien dĂȘrfan sille wy $MSG eksplisyt oanjaan.

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

Pipeline resultaat

  • smiet Ășt:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • echo mei vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Erfskip mei groepen en binnen .gitlab-ci.yml [boarnen]

Litte wy besykje de foarige 2 foarbylden te kombinearjen. Groep fariabelen hawwe foarrang boppe fariabelen binnen .gitlab-ci.yml.

Groepen mei fariabelen

Hoe erft Gitlab-CI omjouwingsfariabelen?

.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

Pipeline resultaat

  • smiet Ășt:
    $ echo $MSG
    Y
    Job succeeded
  • echo mei vars:
    $ echo $MSG
    Y
    Job succeeded

Erfskip mei it opjaan fan fariabelen yn projektynstellingen [boarnen]

Fariabelen yn projektynstellingen hawwe ALTYD de heechste prioriteit! En de fariabelen oantsjutte binnen .gitlab-ci.yml net spylje gjin rol.

Groepen mei fariabelen

Groep fariabelen hawwe legere prioriteit.
Hoe erft Gitlab-CI omjouwingsfariabelen?

.gitlab-ci.yml

Litte wy it bestùn brûke fan it foarige foarbyld. Hjir wer binne der fariabelen oantsjutte binnen .gitlab-ci.yml, mar fariabelen binnen groepen noch foarrang boppe harren.

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

Pipeline resultaat

  • smiet Ășt:
    $ echo $MSG
    project-3
    Job succeeded
  • echo mei vars:
    $ echo $MSG
    project-3
    Job succeeded

Erfskip mei lege wearde [boarnen]

In lege wearde is ek in wearde
In lege wearde is net Null

Groepen mei fariabelen

Hoe erft Gitlab-CI omjouwingsfariabelen?

.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

Pipeline resultaat

  • smiet Ășt:
    $ echo $MSG
    Job succeeded
  • echo mei vars:
    $ echo $MSG
    Job succeeded

Erfskip mei ynklusyf en groepen [boarnen]

Hjir sille wy besykje projekt-2 op te nimmen yn projekt-3
Groepen yn dit gefal hawwe prioriteit.

Groepen mei fariabelen

Hoe erft Gitlab-CI omjouwingsfariabelen?

.gitlab-ci.yml

En set de fariabele globaal yn .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'

Pipeline resultaat

  • smiet Ășt:
    $ echo $MSG
    B
    Job succeeded
  • echo mei vars:
    $ echo $MSG
    B
    Job succeeded

Erfskip mei befetsje [boarnen]

Hjir sille wy besykje projekt-2 op te nimmen yn projekt-3.
Mei de betingst dat: noch de groepen noch it projekt sels fariabelen hawwe.

Groepen mei fariabelen

Hoe erft Gitlab-CI omjouwingsfariabelen?

.gitlab-ci.yml

Itselde as yn it foarige foarbyld

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

Pipeline resultaat

  • smiet Ășt:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • echo mei vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

De resultaten binne as folget prioriteiten:

  1. Fariabelen yn projektynstellingen
  2. Fariabelen yn groepen
  3. Fariabelen strikt spesifisearre binnen banen (ynklusyf ynbegrepen bestannen)
  4. Globale fariabelen binnen .gitlab-ci.yml
  5. Globale fariabelen binnen opnommen bestannen

konklĂșzje

It meast net foar de hùn lizzende punt is dat de regel "hoe tichter in fariabele is by de koade, hoe wichtiger it is" wurket earst foar groepen, en dan deselde regel foar fariabelen binnen .gitlab-ci.yml, mar allinich ûnder de betingst dat de fariabelen yn 'e groepen net oantsjutte binne.
Folgjende, in wichtich punt is om te begripen dat de globale romte foar de wichtichste en opnommen .gitlab-ci.yml is mienskiplik. En it bestĂąn wĂȘryn it opnimmen foarkomt hat prioriteit.

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners đŸ”„ Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster