多くのスケジュールされたビルドが常に実行されている大規模な Hudson セットアップがあります。現在、1 つのビルドを適切に動作させようとしていますが、スケジュールされたビルドがキューに入るのを時々待たなければなりません。個々のビルドの「cron」設定を調整せずに、面倒なビルドに集中できるように、すべてのスケジュールされたビルドを無効にする方法はありますか?
6 に答える
シャットダウンの準備をするように伝えます。
OPからの編集(banjollity)
完璧ではありませんが、これは合理的な「デフォルトのインストールでマウスを数回クリックするソリューション」のようなソリューションであり、受け入れられた答えだと思います。
- ジョブをキューに入れる
- ハドソンにシャットダウンの準備をするよう伝えてください。これにより、その間に他のジョブが実行されるのを防ぎます。
- 自分の仕事の障害を診断し、それを修正する可能性のある新しいコードをコミットします。(私の仕事が大好きです)。
- ハドソンのシャットダウンをキャンセルします。
- ステップ 1 に進みます。
私が貢献した「構成スライシング」プラグインを使用すると、多くのジョブの cron 設定を同時に変更できます。これにより、必要な一括変更を行うことができます。
Mikezx6rの提案を拡張して、特定の文字列に一致するすべてのビルドを無効にする簡単な方法を思いつきました。
[user@server jobs] $ for i in *build_name*; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
「for」ループで特定のビルド名を繰り返すこともできます。
[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 を更新する何かを書くことができます。
hudson の各ジョブのディレクトリには、config.xml があります。<project> には disabled という要素があり、これを true に更新して、そのビルドを無効にすることができます。
理想的ではありませんが、ディレクトリを移動して無効の値を変更するスクリプトがあれば、いつでも使用できます。
似たようなものを検索すると、この質問にたどり着きました.Michael Donohueの回答(および彼が提供したプラグイン)には別の利点があることに気付きました。
「構成スライシング」を使用すると、ジョブのサブセットを一度に簡単に無効にすることができます。これはまさに、関連する 8 つのジョブのうち 7 つを一時的に無効にして、8 日に作業できるようにするために必要だったものです。ありがとうマイケル!