Wéi ierft Gitlab-CI Ëmfeldvariablen?

Variablen am Gitlab kënnen op verschiddene Plazen gesat ginn:

  1. A Grupp Astellungen
  2. An de Projet Astellungen
  3. Bannen .gitlab-ci.yml

An dësem Fall kënnen d'Variabelen an de Gruppen- a Projetsastellungen als "Datei" oder "Regular Variabel" gesat ginn a kontrolléiert d'Këschte "geschützt" a "Mask".

Wéi ierft Gitlab-CI Ëmfeldvariablen?

Fänke mer mat der einfacher Ierfschaft un an et gëtt no an no méi komplex.

Déi lescht Lëscht vu Prioritéitsniveauen kann um Enn vum Dokument fonnt ginn.

Ierfschaft mat Gruppen [Quellen]

Variablen vu Gruppen ginn ierflecher, mat der Regel datt wat méi no de Grupp un de Projet läit, dest méi wichteg ass säi Wäert.

Gruppen mat Verännerlechen

Wéi ierft Gitlab-CI Ëmfeldvariablen?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Pipeline Resultat

$ echo $MSG
B

Wann d'Variabel net an der Grupp B spezifizéiert gouf, da géife mir de Wäert A gesinn.

Ierwen Verännerlechen bannent .gitlab-ci.yml [Quellen]

Alles ass ganz einfach hei: Dir kënnt eng Variabel global setzen, oder Dir kënnt se an der Aarbecht iwwerschreiwe.

Gruppen mat Verännerlechen

Wéi ierft Gitlab-CI Ëmfeldvariablen?

.gitlab-ci.yml

Loosst eis elo 2 Aarbechtsplaze schafen, an enger dovun wäerte mir explizit $MSG uginn.

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 Resultat

  • erausgehäit:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • echo mat vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Ierfschaft mat Gruppen a bannen .gitlab-ci.yml [Quellen]

Loosst eis probéieren déi 2 virdrun Beispiller ze kombinéieren. Grupp Verännerlechen Virrang iwwer Verännerlechen bannent .gitlab-ci.yml.

Gruppen mat Verännerlechen

Wéi ierft Gitlab-CI Ëmfeldvariablen?

.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 Resultat

  • erausgehäit:
    $ echo $MSG
    Y
    Job succeeded
  • echo mat vars:
    $ echo $MSG
    Y
    Job succeeded

Ierfschaft mat spezifizéieren Verännerlechen am Projet Astellunge [Quellen]

Variablen am Projet Astellungen hunn ËMMER déi héchst Prioritéit! An d'Verännerlechen, déi am .gitlab-ci.yml spezifizéiert sinn, spillen keng Roll.

Gruppen mat Verännerlechen

Grupp Variablen hu méi niddereg Prioritéit.
Wéi ierft Gitlab-CI Ëmfeldvariablen?

.gitlab-ci.yml

Loosst eis d'Datei aus dem fréiere Beispill benotzen. Hei ginn et nach eng Kéier Verännerlechen bannen .gitlab-ci.yml spezifizéiert, mee Verännerlechen bannent Gruppen nach Virrang iwwer hinnen.

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 Resultat

  • erausgehäit:
    $ echo $MSG
    project-3
    Job succeeded
  • echo mat vars:
    $ echo $MSG
    project-3
    Job succeeded

Ierfschaft mat eidel Wäert [Quellen]

En eidele Wäert ass och e Wäert
En eidele Wäert ass net Null

Gruppen mat Verännerlechen

Wéi ierft Gitlab-CI Ëmfeldvariablen?

.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 Resultat

  • erausgehäit:
    $ echo $MSG
    Job succeeded
  • echo mat vars:
    $ echo $MSG
    Job succeeded

Ierfschaft mat abegraff a Gruppen [Quellen]

Hei wäerte mir probéieren de Projet-2 an de Projet-3 opzehuelen
Gruppen an dësem Fall Prioritéit.

Gruppen mat Verännerlechen

Wéi ierft Gitlab-CI Ëmfeldvariablen?

.gitlab-ci.yml

A setzen d'Variabel global an .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 Resultat

  • erausgehäit:
    $ echo $MSG
    B
    Job succeeded
  • echo mat vars:
    $ echo $MSG
    B
    Job succeeded

Ierfschaft mat abegraff [Quellen]

Hei wäerte mir probéieren de Projet-2 an de Projet-3 opzehuelen.
Mat der Bedingung datt: Weder d'Gruppen nach de Projet selwer Variabelen hunn.

Gruppen mat Verännerlechen

Wéi ierft Gitlab-CI Ëmfeldvariablen?

.gitlab-ci.yml

Selwecht wéi am virdrun Beispill

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 Resultat

  • erausgehäit:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • echo mat vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

D'Resultater si wéi follegt Prioritéiten:

  1. Variablen am Projet Astellunge
  2. Variablen a Gruppen
  3. Variablen streng spezifizéiert bannent Aarbechtsplazen (inklusiv Dateien abegraff)
  4. Global Verännerlechen bannen .gitlab-ci.yml
  5. Global Verännerlechen bannent abegraff Fichieren

Konklusioun

Deen net offensichtlechste Punkt ass datt d'Regel "wat méi no eng Variabel un de Code ass, wat et méi wichteg ass" fir d'éischt fir Gruppen funktionnéiert, an dann déiselwecht Regel fir Variablen bannent .gitlab-ci.yml, awer nëmmen ënner der Bedingung datt d'Variabelen an de Gruppen net spezifizéiert sinn.
Nächst, e wichtege Punkt ass ze verstoen, datt de globale Raum fir d'Haaptrei an abegraff .gitlab-ci.yml gemeinsam ass. An den Dossier an deem d'Inklusioun geschitt huet Prioritéit.

Source: will.com

Setzt e Commentaire