As variáveis do Gitlab podem ser definidas em vários locais:
- Nas configurações de grupo
- Nas configurações do projeto
- Por dentro .gitlab-ci.yml
Nesse caso, as variáveis nas configurações dos grupos e do projeto podem ser definidas como "arquivo" ou "variável comum" e marque as caixas "protegido" e "mascarar".

Vamos começar com uma herança simples e gradualmente se tornará mais complexa.
Uma lista final de níveis de prioridade pode ser encontrada no final do documento.
, , .

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
O ponto mais óbvio é que a regra "quanto mais próxima a variável do código, mais importante ela é" funciona primeiro para grupos e, em seguida, a mesma regra para variáveis dentro de .gitlab-ci.yml, mas apenas com a condição de que as variáveis nos grupos não sejam definidas .
Além disso, um lugar importante é o entendimento de que o espaço global para o núcleo e o .gitlab-ci.yml excluído é comum. E o arquivo no qual a inclusão ocorre tem precedência.