Gitlab-CI mühit dəyişənlərini necə miras alır?

Gitlab-da dəyişənlər bir neçə yerdə təyin edilə bilər:

  1. Qrup parametrlərində
  2. Layihə parametrlərində
  3. .gitlab-ci.yml daxilində

Bu halda, qrup və layihə parametrlərindəki dəyişənlər "fayl" və ya "müntəzəm dəyişən" kimi təyin oluna bilər və "qorunan" və "maska" qutularını yoxlayın.

Gitlab-CI mühit dəyişənlərini necə miras alır?

Sadə mirasdan başlayaq və o, getdikcə daha da mürəkkəbləşəcək.

Prioritet səviyyələrinin yekun siyahısı sənədin sonunda tapıla bilər.

Qruplarla miras [mənbələr]

Qruplardan dəyişənlər miras alınır, bir qayda ilə qrup layihəyə nə qədər yaxındırsa, onun dəyəri bir o qədər vacibdir.

Dəyişənləri olan qruplar

Gitlab-CI mühit dəyişənlərini necə miras alır?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Boru kəmərinin nəticəsi

$ echo $MSG
B

Əgər dəyişən B qrupunda göstərilməsəydi, onda biz A dəyərini görərdik.

.gitlab-ci.yml daxilində dəyişənlərin miras alınması [mənbələr]

Burada hər şey olduqca sadədir: siz qlobal olaraq dəyişən təyin edə bilərsiniz və ya iş daxilində onun üzərinə yaza bilərsiniz.

Dəyişənləri olan qruplar

Gitlab-CI mühit dəyişənlərini necə miras alır?

.gitlab-ci.yml

İndi 2 iş yeri yaradaq, onlardan birində biz açıq şəkildə $MSG göstərəcəyik.

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

Boru kəmərinin nəticəsi

  • əks-səda:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • vars ilə əks-səda:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Qruplarla və .gitlab-ci.yml daxilində varislik [mənbələr]

Əvvəlki 2 nümunəni birləşdirməyə çalışaq. Qrup dəyişənləri .gitlab-ci.yml daxilində dəyişənlər üzərində üstünlük təşkil edir.

Dəyişənləri olan qruplar

Gitlab-CI mühit dəyişənlərini necə miras alır?

.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

Boru kəmərinin nəticəsi

  • əks-səda:
    $ echo $MSG
    Y
    Job succeeded
  • vars ilə əks-səda:
    $ echo $MSG
    Y
    Job succeeded

Layihə parametrlərində dəyişənlərin təyin edilməsi ilə varislik [mənbələr]

Layihə parametrlərində dəyişənlər HƏMİŞƏ ən yüksək prioritetə ​​malikdirlər! Və .gitlab-ci.yml daxilində göstərilən dəyişənlər heç bir rol oynamır.

Dəyişənləri olan qruplar

Qrup dəyişənləri daha aşağı prioritetə ​​malikdir.
Gitlab-CI mühit dəyişənlərini necə miras alır?

.gitlab-ci.yml

Əvvəlki nümunədəki fayldan istifadə edək. Burada yenə .gitlab-ci.yml daxilində göstərilən dəyişənlər var, lakin qruplar daxilindəki dəyişənlər hələ də onlardan üstündür.

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

Boru kəmərinin nəticəsi

  • əks-səda:
    $ echo $MSG
    project-3
    Job succeeded
  • vars ilə əks-səda:
    $ echo $MSG
    project-3
    Job succeeded

Boş dəyəri olan miras [mənbələr]

Boş dəyər də dəyərdir
Boş dəyər Null deyil

Dəyişənləri olan qruplar

Gitlab-CI mühit dəyişənlərini necə miras alır?

.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

Boru kəmərinin nəticəsi

  • əks-səda:
    $ echo $MSG
    Job succeeded
  • vars ilə əks-səda:
    $ echo $MSG
    Job succeeded

Daxil və qruplarla miras [mənbələr]

Burada layihə-2-ü layihə-3-yə daxil etməyə çalışacağıq
Bu vəziyyətdə qruplar üstünlük təşkil edir.

Dəyişənləri olan qruplar

Gitlab-CI mühit dəyişənlərini necə miras alır?

.gitlab-ci.yml

Və dəyişəni qlobal olaraq .gitlab-ci.yml-də təyin edin

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

Boru kəmərinin nəticəsi

  • əks-səda:
    $ echo $MSG
    B
    Job succeeded
  • vars ilə əks-səda:
    $ echo $MSG
    B
    Job succeeded

Daxil olmaqla miras [mənbələr]

Burada layihə-2-ü layihə-3-yə daxil etməyə çalışacağıq.
Bir şərtlə: nə qrupların, nə də layihənin özündə heç bir dəyişən yoxdur.

Dəyişənləri olan qruplar

Gitlab-CI mühit dəyişənlərini necə miras alır?

.gitlab-ci.yml

Əvvəlki nümunədə olduğu kimi

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

Boru kəmərinin nəticəsi

  • əks-səda:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • vars ilə əks-səda:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Nəticələr aşağıdakı kimidir prioritetlər:

  1. Layihə parametrlərində dəyişənlər
  2. Qruplarda dəyişənlər
  3. Dəyişənlər işlərin daxilində ciddi şəkildə müəyyən edilir (daxil edilmiş fayllar daxil olmaqla)
  4. .gitlab-ci.yml daxilində qlobal dəyişənlər
  5. Daxil edilmiş fayllar daxilində qlobal dəyişənlər

Nəticə

Ən aydın olmayan məqam odur ki, “dəyişən koda nə qədər yaxındırsa, bir o qədər vacibdir” qaydası əvvəlcə qruplar üçün, sonra isə eyni qayda .gitlab-ci.yml daxilindəki dəyişənlər üçün işləyir, lakin yalnız şərtlə qruplardakı dəyişənlərin müəyyən edilməməsi.
Sonra, vacib bir məqam, əsas və daxil edilmiş .gitlab-ci.yml üçün qlobal məkanın ümumi olduğunu başa düşməkdir. Və daxiletmənin baş verdiyi fayl prioritetdir.

Mənbə: www.habr.com

Добавить комментарий