Les variables Gitlab peuvent être définies à plusieurs endroits:
- Dans les paramètres de groupe
- Dans les paramètres du projet
- À l'intérieur .gitlab-ci.yml
Dans ce cas, les variables dans les paramètres des groupes et du projet peuvent être définies comme "fichier" ou "variable ordinaire" et cocher les cases "protégées" et "masque".

Commençons par l'héritage simple et deviendrons progressivement plus complexes.
Une liste finale des niveaux de priorité se trouve à la fin du document.
, , .

image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
$ echo $MSG
B
B, .
.gitlab-ci.yml []
: , .
c

2 , $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
.gitlab-ci.yml []
2 . .gitlab-ci.yml.
c

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
! , .gitlab-ci.yml .
c
.

. , , .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
–
– Null
c

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
project-2 project-3
.
c

.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'
project-2 project-3.
C : , .
c

variables:
MSG: "With include .gitlab-ci.yml"
include:
- project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
file: '.gitlab-ci.yml'
:
- ( )
- .gitlab-ci.yml
Le point le plus évident est que la règle "plus la variable est proche du code, plus elle est importante" fonctionne d'abord pour les groupes, puis la même règle pour les variables à l'intérieur de .gitlab-ci.yml, mais uniquement à la condition que les variables des groupes ne soient pas définies .
En outre, un endroit important est la compréhension que l'espace global pour le noyau et le .gitlab-ci.yml exclu est commun. Et le fichier dans lequel l'inclusion se produit a la priorité.