البرمجة

تنظيف بنية Jenkins: حذف بناء الوظائف القديمة تلقائيًا

في عملية تنظيفي لبنية Jenkins التي تم تكوينها بشكل غير صحيح، أواجه تحديًا في حذف البناء القديم الذي يزيد عن آخر 20 بناء لكل وظيفة. هل هناك وسيلة لتلقيني كيفية أتمتة هذا باستخدام نص أو شيء من هذا القبيل؟

وجدت العديد من الحلول لحذف بناء معين لوظيفة محددة، ولكن لا يبدو أن هناك أي شيء يتيح حذف البناء لكل الوظائف دفعة واحدة.

يُعد Jenkins أداة قوية ومرنة، ولكن التحكم في عمليات الحذف يتطلب فهمًا دقيقًا للسيناريو الخاص بك. يمكن استخدام البرمجة النصية (Scripting) لتحقيق هذه المهمة بشكل أوتوماتيكي.

إليك فكرة عن كيفية البداية:

  1. استخدام Jenkins Script Console:
    يمكنك استخدام واجهة Script Console في Jenkins لتنفيذ نصوص Groovy لتحقيق المهمة. يمكن العثور على الواجهة في “Manage Jenkins” ثم “Script Console”.

  2. كتابة السيناريو:
    يجب عليك كتابة سيناريو Groovy يقوم بفحص كل وظيفة (Job) وحذف البناء القديم. يمكنك الوصول إلى جميع الوظائف باستخدام Jenkins.instance.getAllItems(Job.class).

  3. حذف البناء:
    يمكن استخدام أمر مثل build.delete() لحذف البناء بعد التحقق من أنه يفي بشرط العدد الأقليمي المطلوب.

  4. تجميع السيناريو:
    اكتب السيناريو بحيث يتم تكراره لكل وظيفة، ثم قم بتنفيذه في Script Console.

  5. اختبار السيناريو:
    يجب أن تقوم بفحص السيناريو على بيئة اختبار قبل تنفيذه على البيئة الإنتاجية لتجنب أية مشاكل غير متوقعة.

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

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

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

أولاً وقبل كل شيء، يجب عليك فهم تفاصيل بيئتك الحالية في Jenkins. ابدأ بفحص جميع الوظائف الموجودة باستخدام Script Console وتحديد السمات الفريدة لكل وظيفة.

ثانياً، يُفضل استخدام Groovy Scripting للتفاعل مع Jenkins. Groovy يعتبر لغة قوية ومرنة تعتمد على Java وتتيح لك الوصول إلى العديد من API في Jenkins.

ثالثًا، يمكنك استخدام دالة getBuilds() للوصول إلى جميع بناء (builds) لوظيفة محددة. ثم يمكنك تنظيم البناء بحسب التوقيت وحذف البناء الذي تزيد فترته عن آخر 20 بناء.

هناك مثال على كيفية البداية في كتابة سيناريو Groovy:

groovy
import hudson.model.* def numberOfBuildsToKeep = 20 Jenkins.instance.getAllItems(Job.class).each { job -> println("Processing job: ${job.fullName}") job.getBuilds().eachWithIndex { build, index -> if (index >= numberOfBuildsToKeep) { println("Deleting build #${build.number}") build.delete() } } }

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

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

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