كيف ترث Gitlab-CI متغيرات البيئة؟

يمكن تعيين متغيرات Gitlab في عدة أماكن:


  1. في إعدادات المجموعة
  2. في إعدادات المشروع
  3. داخل .gitlab-ci.yml

في هذه الحالة ، يمكن تعيين المتغيرات في إعدادات المجموعات والمشروع كـ "ملف" أو "متغير عادي" والتحقق من المربعين "المحمي" و "القناع".



لنبدأ بالميراث البسيط وسنصبح أكثر تعقيدًا بشكل تدريجي.


يمكن العثور على قائمة نهائية بمستويات الأولوية في نهاية الوثيقة.


[]


, , .



المجموعات ذات المتغيرات


.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


النقطة الأكثر وضوحًا هي أن القاعدة "كلما كان المتغير أقرب إلى الشفرة ، زادت أهميته" تعمل أولاً للمجموعات ، ثم نفس القاعدة للمتغيرات داخل .gitlab-ci.yml ، ولكن فقط بشرط عدم تحديد المتغيرات في المجموعات .
علاوة على ذلك ، هناك مكان مهم هو فهم أن المساحة العالمية للنواة والمُستبعدة .gitlab-ci.yml شائعة. والملف الذي يحدث فيه التضمين له الأسبقية.


All Articles