2009-08-19 10 views
3

大規模なHudsonには、常に実行される多数のスケジュールされたビルドが設定されています。現在、私は1つのビルドを正しく動作させようとしていますが、スケジュールされたビルドがキューに入るのを待たなければなりません。すべてのスケジュールされたビルドを無効にする方法はありますか?それぞれのビルドの "cron"設定を調整することなく、面倒なビルドに集中できますか?Hudsonの自動スケジュールビルドを一度に無効にすることはできますか?

+0

Groovyの回答が追加されました。あなたはそれが有用であることを願っています。 – Jayan

答えて

4

シャットダウンを準備するように指示します。 OPから


編集(banjollity)
それは完璧ではないのですが、私は、これは合理的な解決策のようなもの、それ故に受け入れ答えを「既定で数回のマウスクリックのソリューションがインストール」だと思います。

  1. キューアップの仕事
  2. をシャットダウンする準備をハドソンに知らせます。これにより、その間に他のジョブが実行されなくなります。
  3. 私の仕事で障害を診断し、かもしれないという新しいコードを修正してください。 (私の仕事が大好きです)。
  4. ハドソンをシャットダウンしてキャンセルします。私は貢献
  5. 後藤ステップ1.
+0

これまでのところこれほど良い。それは他の仕事を止めましたが、私が望むものを待ち行列に入れさせてくれました。 – banjollity

+0

ニース - 私はあなたがそれをすることができるかどうか分からなかった。 +1 –

0

私は直接行う方法はありませんが、すべてのジョブのconfig.xmlを更新するものを書くことができます。

hudsonの各ジョブのディレクトリにconfig.xmlがあります。 <プロジェクト>にはdisabledという要素があり、これをtrueに更新するとビルドが無効になります。

ただし、ディレクトリを移動して無効の値を変更するスクリプトがあれば、いつでも使用できます。

4

'configuration slicing'プラグインは、同時に多くのジョブのcronの設定を変更することができます。これにより、一括変更することができます。 Mikezx6rの提案時に拡大

2

は、私はすべてを無効にする迅速な方法を思い付いた特定の文字列に一致構築します

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

あなたはまた、「for」ループに特定のビルド名を反復処理できます。

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

あなたはsedの前に「エコー」を入れて何をするか確認するために最初にそれをテストすることができます。

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

逆に、あなたはsedスクリプトの周りに切り替えることにより、すべての一致するジョブを再度有効にすることができます

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

0

似たようなの検索はこの質問に私をもたらした、と私は別の利点があります実現Michael Donohueの答え(彼が寄稿したプラグイン)。

「設定スライシング」では、ジョブのサブセットを一度に無効にすることは簡単です。それはまさに私が一時的に8つの関連する仕事のうちの7つを無効にするのに必要なものなので、私は8日に働くことができました。ありがとうマイケル!

0

これは、jenkins Consoleを使用して行うことができます。 Groovyスクリプトを実行し、ほとんど何でもします。

次のスクリプトは、すべてのプロジェクトを反復処理します。 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() 
}