البرمجة

تنفيذ سكريبتين في جنكنز على نفس العقدة

عند استخدام سكريبتات الخطوط الأنابيبية في جنكنز وتحميل سكريبت من سكريبت آخر، يحدث أن يتم تنفيذ السكريبتين على عقدة مختلفة، حيث يُنفذ السكريبت الأول عادةً على عقدة الرئيسية (master) والسكريبت الثاني يُنفذ على عقدة فرعية (slave).

يتم استخدام سكريبتات الأنابيب في جنكنز بشكل شائع لأتمتة العمليات وتنظيم السير العملي. وفي حالتك، تستخدم الخيار “Pipeline Script from SCM” للعديد من المهام. تعرف كل مهمة على عنوان مستودع جيت الخاص بها، وتعرِّف ملف Jenkinsfile بسيطًا في جذر المستودع، وتحتوي السكريبت الأنابيبي داخله بشكل أساسي على تحميل سكريبت أنابيبي أكثر عمومية.

مثلاً، السكريبت common-pipeline.groovy الخاص بك ينفذ العمليات الفعلية مثل بناء البرامج، وإصدارها، ونشرها. الآن، لا ترغب في تحديد العقدة لكل مهمة بشكل يدوي، لذا فإن كلتا السكريبتين تحتوي على node(“master”) أو node(“remote”).

ولكن، ترغب في ضمان أن السكريبت الثاني يُنفذ على نفس العقدة التي تم تنفيذ السكريبت الأول عليها، وذلك لضمان توفر مستودع الجيت الفعلي من مساحة العمل على عقدة أخرى.

لتحقيق هذا، يمكنك استخدام متغير البيئة BUILD_TAG المتوفر تلقائيًا في جنكنز. يمكنك تحديد نفس العقدة لتنفيذ السكريبت الثاني على أساس القيمة الموجودة في هذا المتغير. يمكنك تعديل السكريبت common-pipeline.groovy للتحقق من قيمة BUILD_TAG وتعيين العقدة وفقًا لذلك.

في مثالك، يمكنك تعديل common-pipeline.groovy على النحو التالي:

groovy
{ def currentNode = env.BUILD_TAG.split(" ")[0] // Extracting the node name from BUILD_TAG node(currentNode) { def functions = load 'common/functions.groovy' functions.build() functions.release() functions.deploy() } }

بهذه الطريقة، سيتم تنفيذ السكريبت الثاني على نفس العقدة التي تم تنفيذ السكريبت الأول عليها، مما يضمن توفر مستودع الجيت في مساحة العمل على نفس العقدة.

إذا كان لديك أي أسئلة إضافية أو استفسارات، فلا تتردد في طرحها!

المزيد من المعلومات

بالطبع، هناك بعض المعلومات الإضافية التي يمكن توضيحها لفهم أفضل للسياق وكيفية تحقيق الهدف المطلوب.

أولاً، يمكننا التطرق إلى متغير BUILD_TAG الذي تم استخدامه في الحل السابق. BUILD_TAG هو متغير بيئي مدمج في Jenkins يحتوي على علامة فريدة للبناء الحالي. تتضمن هذه العلامة عادة اسم المشروع ورقم البناء ورقم البناء الموجه. بالتقسيم على الفواصل الفارغة، يمكن استخراج اسم العقدة التي تم تنفيذ البناء عليها.

ثانيًا، الحل السابق يفترض أن كل مهمة في الجنكنز تنفذ على عقدة واحدة فقط. إذا كان لديك حالة حيث يمكن أن تنفذ مهام متعددة على عقدة مختلفة، فيجب أخذ ذلك في الاعتبار. في هذه الحالة، يمكنك استخدام متغير البيئة NODE_NAME لاستخراج اسم العقدة التي تم تنفيذ البناء عليها بدلاً من BUILD_TAG.

ثالثًا، يجب التأكد من أن العقدة التي تقوم بتشغيل السكريبت الثاني عليها لديها الوصول إلى مستودع الجيت المطلوب. يمكن أن تحدث مشكلات إذا كانت العقدة ليست مكونة من نفس المشروع أو ليس لديها الوصول إلى نفس المستودع.

باستخدام هذه المعلومات الإضافية، يمكننا توجيهك إلى تكوين أكثر دقة لتحقيق ما تريده بالضبط. وإذا كنت بحاجة إلى مزيد من التفاصيل أو الإرشادات حول موضوع محدد، فلا تتردد في طرح الأسئلة!

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر