هل يمكنني تعطيل مجدولة هدسون المجدولة التلقائية في وقت واحد؟

StackOverflow https://stackoverflow.com/questions/1299180

سؤال

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

هل كانت مفيدة؟

المحلول

أخبره بالتحضير لإغلاقه.


تحرير من OP. (banjollity)
إنه ليس مثاليا، لكنني أعتقد أن هذا هو الحل القليل من النقرات بالماوس معقولة مع التثبيت الافتراضي "نوع الحل، وبالتالي الإجابة المقبولة.

  1. قائمة الانتظار
  2. أخبر هدسون الاستعداد لإغلاق. هذا يمنع الوظائف الأخرى التي يتم تشغيلها في هذه الأثناء.
  3. تشخيص الأخطاء مع وظيفتي، ارتكاب رمز جديد ربما اصلحه. (أنا أحب وظيفتي).
  4. إلغاء hudson اغلاق.
  5. غوتو الخطوة 1.

نصائح أخرى

ال "التقدير التقطيع" يسمح لك البرنامج المساعد في بتعديل إعدادات CRON للعديد من الوظائف في وقت واحد. هذا يجب أن يسمح لك بإجراء التغييرات السائبة التي تريدها.

التوسع في اقتراح MikezX6R، لقد توصلت إلى طريقة سريعة لتعطيل جميع المباني مطابقة سلسلة معينة:

[user@server jobs] $ for i in *build_name*; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done

يمكنك أيضا التكرار من خلال أسماء بناء محددة في حلقة "ل":

[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done

يمكنك اختباره أولا لمعرفة ما ستفعله عن طريق وضع "الصدى" قبل SED:

[user@server jobs] $ for i in build1 build2 build3; do echo sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done

على العكس، يمكنك إعادة تمكين جميع المهام المطابقة عن طريق التبديل حول البرنامج النصي SED:

[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>true"/"disabled>false/" $i/config.xml; done

لا أرى طريقة مباشرة للقيام بذلك، ولكن يمكنك كتابة شيء يقوم بتحديث CONFIG.XML لجميع الوظائف.

في دليل كل وظيفة في هدسون، هناك config.xml. الu003Cproject> لديه عنصر يسمى تعطيل يمكنك التحديث إلى TRUE، وبالتالي تعطيل هذا البناء.

ليس مثاليا، ولكن بمجرد أن يكون لديك البرنامج النصي للمشي دليل وتغيير قيمة المعطلة، يمكنك دائما استخدامه.

أبحث عن شيء مماثل جلبني إلى هذا السؤال، وأدركت أن هناك فائدة أخرى لإجابة مايكل دونهو (والمكون الإضافي الذي ساهم به).

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

يمكن القيام بذلك باستخدام وحدة التحكم Jenkins. يعمل البرنامج النصي المزخرف والقيام بأي شيء تقريبا.

يتكرر البرنامج النصي من خلال جميع المشاريع. تحقق مما إذا كان لديه TimerTrigger. (يمكن للمرء أن يمدد هذا الاختيار من مشغلات أخرى أيضا)

import hudson.model.Hudson
import hudson.model.Project
import hudson.triggers.TimerTrigger
import hudson.triggers.Trigger
import hudson.triggers.TriggerDescriptor

//All the projects on which we can apply the getBuilders method
def allProjects = Hudson.instance.items.findAll { it instanceof Project }
def projectsToWorkOn = [];
allProjects.each { Project project ->
    Map<TriggerDescriptor, Trigger> triggers =
            project.getTriggers();
    triggers.each { trigger ->

        if (trigger.value instanceof TimerTrigger) {
            projectsToWorkOn.push(project)


        }

    }
}


projectsToWorkOn
        .each { Project project ->

    project.disable();
    project.save()
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top