Gitlab میں متغیرات کو کئی جگہوں پر سیٹ کیا جا سکتا ہے:
- گروپ سیٹنگز میں
- پروجیکٹ کی ترتیبات میں
- gitlab-ci.yml کے اندر
اس صورت میں، گروپ اور پروجیکٹ کی ترتیبات میں متغیرات کو "فائل" یا "باقاعدہ متغیر" کے طور پر سیٹ کیا جا سکتا ہے اور "محفوظ" اور "ماسک" چیک باکسز کو چیک کریں۔
آئیے سادہ وراثت سے شروع کریں اور یہ آہستہ آہستہ مزید پیچیدہ ہو جائے گا۔
ترجیحی سطحوں کی حتمی فہرست دستاویز کے آخر میں مل سکتی ہے۔
گروہوں کے ساتھ وراثت [ذرائع]
گروپوں سے متغیرات وراثت میں ملتے ہیں، اس اصول کے ساتھ کہ گروپ پروجیکٹ کے جتنا قریب ہے، اس کی قدر اتنی ہی زیادہ اہم ہے۔
متغیرات والے گروپس
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.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.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.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.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.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.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
نتائج درج ذیل ہیں۔ ترجیحات:
- پروجیکٹ کی ترتیبات میں متغیرات
- گروہوں میں متغیر
- ملازمتوں کے اندر سختی سے متعین کردہ متغیرات (بشمول فائلیں)
- gitlab-ci.yml کے اندر عالمی متغیرات
- شامل فائلوں کے اندر عالمی متغیرات
حاصل يہ ہوا
سب سے زیادہ واضح نکتہ یہ ہے کہ اصول "متغیر کوڈ کے جتنا قریب ہے، اتنا ہی اہم ہے" پہلے گروپوں کے لیے کام کرتا ہے، اور پھر وہی اصول .gitlab-ci.yml کے اندر متغیرات کے لیے، لیکن صرف شرط کے تحت۔ کہ گروپوں میں متغیرات کی وضاحت نہیں کی گئی ہے۔
اگلا، ایک اہم نکتہ یہ سمجھنا ہے کہ مرکزی اور شامل .gitlab-ci.yml کے لیے عالمی جگہ مشترک ہے۔ اور جس فائل میں شمولیت ہوتی ہے اسے ترجیح حاصل ہوتی ہے۔
ماخذ: www.habr.com