Bagaimana Gitlab-CI mewarisi variabel lingkungan?

Variabel Gitlab dapat diatur di beberapa tempat:


  1. Dalam pengaturan grup
  2. Dalam pengaturan proyek
  3. Di dalam .gitlab-ci.yml

Dalam hal ini, variabel dalam pengaturan grup dan proyek dapat ditetapkan sebagai "file" atau "variabel biasa" dan centang kotak "protected" dan "mask".



Mari kita mulai dengan warisan sederhana dan secara bertahap akan menjadi lebih kompleks.


Daftar akhir tingkat prioritas dapat ditemukan di akhir dokumen.


[]


, , .



Grup dengan Variabel


.gitlab-ci.yml


image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG


$ echo $MSG
B

B, .




.gitlab-ci.yml []


: , .


c



.gitlab-ci.yml


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


  • echo:


    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded

  • echo with vars:


    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded




.gitlab-ci.yml []


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


  • echo:


    $ echo $MSG
    Y
    Job succeeded

  • echo with vars:


    $ echo $MSG
    Y
    Job succeeded




[]


! , .gitlab-ci.yml .


c


.


.gitlab-ci.yml


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


  • echo:


    $ echo $MSG
    project-3
    Job succeeded

  • echo with vars:


    $ echo $MSG
    project-3
    Job succeeded




[]


–
– Null


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


  • echo:


    $ echo $MSG
    Job succeeded

  • echo with vars:


    $ echo $MSG
    Job succeeded




[]


project-2 project-3
.


c



.gitlab-ci.yml


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


  • echo:


    $ echo $MSG
    B
    Job succeeded

  • echo with vars:


    $ echo $MSG
    B
    Job succeeded




[]


project-2 project-3.
C : , .


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'


  • echo:


    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded

  • echo with vars:


    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded


:


  1. ( )
  2. .gitlab-ci.yml


Poin yang paling jelas adalah bahwa aturan "semakin dekat variabel ke kode, semakin penting itu" bekerja pertama untuk grup, dan kemudian aturan yang sama untuk variabel di dalam .gitlab-ci.yml, tetapi hanya dengan syarat bahwa variabel dalam kelompok tidak didefinisikan .
Selanjutnya, tempat yang penting adalah pemahaman bahwa ruang global untuk inti dan .gitlab-ci.yml yang dikecualikan adalah umum. Dan file di mana inklusi terjadi diutamakan.


All Articles