Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

Gitlab میں متغیرات کو کئی جگہوں پر سیٹ کیا جا سکتا ہے:

  1. گروپ سیٹنگز میں
  2. پروجیکٹ کی ترتیبات میں
  3. gitlab-ci.yml کے اندر

اس صورت میں، گروپ اور پروجیکٹ کی ترتیبات میں متغیرات کو "فائل" یا "باقاعدہ متغیر" کے طور پر سیٹ کیا جا سکتا ہے اور "محفوظ" اور "ماسک" چیک باکسز کو چیک کریں۔

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

آئیے سادہ وراثت سے شروع کریں اور یہ آہستہ آہستہ مزید پیچیدہ ہو جائے گا۔

ترجیحی سطحوں کی حتمی فہرست دستاویز کے آخر میں مل سکتی ہے۔

گروہوں کے ساتھ وراثت [ذرائع]

گروپوں سے متغیرات وراثت میں ملتے ہیں، اس اصول کے ساتھ کہ گروپ پروجیکٹ کے جتنا قریب ہے، اس کی قدر اتنی ہی زیادہ اہم ہے۔

متغیرات والے گروپس

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

پائپ لائن کا نتیجہ

$ echo $MSG
B

اگر گروپ بی میں متغیر کی وضاحت نہ کی گئی ہوتی، تو ہم قدر A کو دیکھتے۔

.gitlab-ci.yml کے اندر وراثتی متغیرات [ذرائع]

یہاں سب کچھ بہت آسان ہے: آپ عالمی سطح پر ایک متغیر سیٹ کر سکتے ہیں، یا آپ اسے جاب کے اندر اوور رائٹ کر سکتے ہیں۔

متغیرات والے گروپس

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

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 $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • vars کے ساتھ بازگشت:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

گروپوں کے ساتھ اور اندر .gitlab-ci.yml کے ساتھ وراثت [ذرائع]

آئیے پچھلی 2 مثالوں کو یکجا کرنے کی کوشش کرتے ہیں۔ گروپ متغیرات .gitlab-ci.yml کے اندر موجود متغیرات پر فوقیت رکھتے ہیں۔

متغیرات والے گروپس

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

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 $MSG
    Y
    Job succeeded
  • vars کے ساتھ بازگشت:
    $ echo $MSG
    Y
    Job succeeded

پروجیکٹ کی ترتیبات میں متغیر کی وضاحت کے ساتھ وراثت [ذرائع]

پروجیکٹ کی ترتیبات میں متغیرات کو ہمیشہ سب سے زیادہ ترجیح حاصل ہوتی ہے! اور .gitlab-ci.yml کے اندر متعین کردہ متغیرات کوئی کردار ادا نہیں کرتے ہیں۔

متغیرات والے گروپس

گروپ متغیر کی ترجیح کم ہے۔
Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

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 $MSG
    project-3
    Job succeeded
  • vars کے ساتھ بازگشت:
    $ echo $MSG
    project-3
    Job succeeded

خالی قیمت کے ساتھ وراثت [ذرائع]

ایک خالی قدر بھی ایک قدر ہے۔
خالی قدر Null نہیں ہے۔

متغیرات والے گروپس

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

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 $MSG
    Job succeeded
  • vars کے ساتھ بازگشت:
    $ echo $MSG
    Job succeeded

شامل اور گروپوں کے ساتھ وراثت [ذرائع]

یہاں ہم پروجیکٹ-2 کو پروجیکٹ-3 میں شامل کرنے کی کوشش کریں گے۔
اس معاملے میں گروپوں کو ترجیح حاصل ہے۔

متغیرات والے گروپس

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

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 $MSG
    B
    Job succeeded
  • vars کے ساتھ بازگشت:
    $ echo $MSG
    B
    Job succeeded

شامل کے ساتھ وراثت [ذرائع]

یہاں ہم پروجیکٹ-2 کو پروجیکٹ-3 میں شامل کرنے کی کوشش کریں گے۔
اس شرط کے ساتھ کہ: نہ تو گروپس اور نہ ہی پروجیکٹ میں کوئی متغیر ہے۔

متغیرات والے گروپس

Gitlab-CI ماحولیاتی متغیرات کا وارث کیسے ہوتا ہے؟

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 $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • vars کے ساتھ بازگشت:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

نتائج درج ذیل ہیں۔ ترجیحات:

  1. پروجیکٹ کی ترتیبات میں متغیرات
  2. گروہوں میں متغیر
  3. ملازمتوں کے اندر سختی سے متعین کردہ متغیرات (بشمول فائلیں)
  4. gitlab-ci.yml کے اندر عالمی متغیرات
  5. شامل فائلوں کے اندر عالمی متغیرات

حاصل يہ ہوا

سب سے زیادہ واضح نکتہ یہ ہے کہ اصول "متغیر کوڈ کے جتنا قریب ہے، اتنا ہی اہم ہے" پہلے گروپوں کے لیے کام کرتا ہے، اور پھر وہی اصول .gitlab-ci.yml کے اندر متغیرات کے لیے، لیکن صرف شرط کے تحت۔ کہ گروپوں میں متغیرات کی وضاحت نہیں کی گئی ہے۔
اگلا، ایک اہم نکتہ یہ سمجھنا ہے کہ مرکزی اور شامل .gitlab-ci.yml کے لیے عالمی جگہ مشترک ہے۔ اور جس فائل میں شمولیت ہوتی ہے اسے ترجیح حاصل ہوتی ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں