Cumu Gitlab-CI eredita e variabili d'ambiente?

Variables in Gitlab ponu esse stabilite in parechji posti:

  1. In i paràmetri di u gruppu
  2. In i paràmetri di u prugettu
  3. Dentru .gitlab-ci.yml

In questu casu, i variàbili in i paràmetri di u gruppu è di u prughjettu ponu esse definiti cum'è "file" o "variabile regulare" è verificate e caselle di spunta "prutettu" è "mask".

Cumu Gitlab-CI eredita e variabili d'ambiente?

Cuminciamu cù l'eredità simplice è diventerà gradualmente più cumplessu.

A lista finali di i livelli di priorità pò esse truvata à a fine di u documentu.

Eredità cù gruppi [fonti]

Variabili da i gruppi sò ereditati, cù a regula chì u più vicinu u gruppu hè situatu à u prugettu, u più impurtante hè u so valore.

Gruppi cù variàbili

Cumu Gitlab-CI eredita e variabili d'ambiente?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

U risultatu di u pipeline

$ echo $MSG
B

Se a variàbile ùn era micca stata specificata in u gruppu B, allora avemu vistu u valore A.

Eredità di variàbili in .gitlab-ci.yml [fonti]

Tuttu hè abbastanza simplice quì: pudete stabilisce una variabile in u mondu, o pudete soprascrivite in u travagliu.

Gruppi cù variàbili

Cumu Gitlab-CI eredita e variabili d'ambiente?

.gitlab-ci.yml

Creemu avà 2 impieghi, in unu di elli indicheremu esplicitamente $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

U risultatu di u pipeline

  • ecu:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • ecu cù vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Eredità cù gruppi è in .gitlab-ci.yml [fonti]

Pruvemu di cumminà i 2 esempi precedenti. I variàbili di u gruppu anu a precedenza annantu à e variàbili in .gitlab-ci.yml.

Gruppi cù variàbili

Cumu Gitlab-CI eredita e variabili d'ambiente?

.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

U risultatu di u pipeline

  • ecu:
    $ echo $MSG
    Y
    Job succeeded
  • ecu cù vars:
    $ echo $MSG
    Y
    Job succeeded

Eredità cù variàbili specifichi in i paràmetri di u prugettu [fonti]

Variabili in i paràmetri di u prughjettu anu SEMPRE a più alta priorità! È e variàbili specificate in .gitlab-ci.yml ùn anu micca un rolu.

Gruppi cù variàbili

Variabili di gruppu anu una priorità più bassa.
Cumu Gitlab-CI eredita e variabili d'ambiente?

.gitlab-ci.yml

Utilizemu u schedariu da l'esempiu precedente. Quì dinò ci sò variabili specificati in .gitlab-ci.yml, ma i variàbili in i gruppi anu sempre a precedenza annantu à elli.

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

U risultatu di u pipeline

  • ecu:
    $ echo $MSG
    project-3
    Job succeeded
  • ecu cù vars:
    $ echo $MSG
    project-3
    Job succeeded

Eredità cù valore viotu [fonti]

Un valore viotu hè ancu un valore
Un valore viotu ùn hè micca Null

Gruppi cù variàbili

Cumu Gitlab-CI eredita e variabili d'ambiente?

.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

U risultatu di u pipeline

  • ecu:
    $ echo $MSG
    Job succeeded
  • ecu cù vars:
    $ echo $MSG
    Job succeeded

Eredità cù include è gruppi [fonti]

Quì avemu da pruvà à include project-2 in project-3
I gruppi in questu casu anu priorità.

Gruppi cù variàbili

Cumu Gitlab-CI eredita e variabili d'ambiente?

.gitlab-ci.yml

È stabilisce a variàbile globally in .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'

U risultatu di u pipeline

  • ecu:
    $ echo $MSG
    B
    Job succeeded
  • ecu cù vars:
    $ echo $MSG
    B
    Job succeeded

Eredità cù include [fonti]

Quì avemu da pruvà à include project-2 in project-3.
Cù a cundizione chì: nè i gruppi nè u prugettu stessu ùn anu micca variàbili.

Gruppi cù variàbili

Cumu Gitlab-CI eredita e variabili d'ambiente?

.gitlab-ci.yml

U listessu cum'è in l'esempiu precedente

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

U risultatu di u pipeline

  • ecu:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • ecu cù vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

I risultati sò i seguenti priurità:

  1. Variabili in i paràmetri di u prugettu
  2. Variabili in gruppi
  3. Variabili strettamente specificate in i travaglii (cumpresi i schedari inclusi)
  4. Variabili globale in .gitlab-ci.yml
  5. Variabili globale in i schedari inclusi

cunchiusioni

U puntu più micca evidenti hè chì a regula "più vicinu una variabile hè di u codice, u più impurtante hè" travaglia prima per i gruppi, è dopu a listessa regula per i variàbili in .gitlab-ci.yml, ma solu sottu a cundizione. chì e variàbili in i gruppi ùn sò micca specificate.
In seguitu, un puntu impurtante hè di capisce chì u spaziu glubale per u .gitlab-ci.yml principale è inclusu hè cumunu. È u schedariu in u quale l'inclusione si trova hà priorità.

Source: www.habr.com

Add a comment