Jenkinsでは、各ビルドステップまたは選択したビルドステップに異なるタイムアウトを与える方法はありますか?
ビルド時のプラグイン出力は、プロジェクト全体で「スタックが発生した場合はビルドを中止する」というタイムアウト機能を提供します。必要なのは、ステップごとに異なるタイムアウトを設定することです。このようにして、プロセスをより効率的にすることができます。
パイプラインジョブでは、次のようにtimeout
でステップをラップできます。
timeout(time: 5, unit: 'MINUTES') { // steps to execute }
私が知っているような機能はありません。 JENKINS-89 要求します。
GNU coreutilsからのtimeout
コマンド があなたの望むものだと思います。これは、ビルド手順がスクリプトであることを前提としています。
最も簡単な方法(それが私が行っている方法です)は、実際には互いに依存する異なるプロジェクトを持ち、それらを連続して構築することです。それは完璧ではありませんが、他のオプションは、異なるツール/ビルド動作で異なるプラグインの実行を監視することです。
それでも、アプローチはうまくいきますが、それは残念です...
ところで、プロジェクトのセットを使用するのを助けることができる素敵なプラグインがあります- Build Pipeline plugin 。現在、作成したパイプラインの視覚化と検証の両方に使用しています。本当に便利です...
ビルドタイムアウトプラグインは、パイプラインには適用されません。 wiki を参照してください
パイプラインのタイムアウトについては、次のようなものを試してください:
timeout(time: 30, unit: 'MINUTES') {
node {
sh 'foo'
}
}
別のスレッドからの同様の回答: タイムアウトステップをJenkins Pipelineに追加する方法
この質問は、ジェンキンスパイプラインが存在する前に最初に尋ねられました。 GUIを使用して引き続きJenkinsを使用および構成できますが、現在、プロジェクトをパイプラインに移行することをお勧めします。パイプラインを使用すると、パイプラインへの変更を追跡し、コードとして保存して、Jenkinsサーバーを移動する必要がある場合に任意のマシンでビルドを簡単に再作成できます。
パイプラインを使用して、ビルドの非常に特定の部分にタイムアウトを追加するのは簡単です。パイプライン構文はシンプルで使いやすいです。
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?', submitter: 'it-ops'
}
関連質問: Jenkins Pipelineにタイムアウトステップを追加する方法
恥知らずに取られた例: CloudBees Jenkins Pipeline Pluginのベストプラクティストップ1
Jenkinsプラグインを使用しないで、スクリプトまたはコマンドをタイムアウトする場合は、Linuxの組み込みユーティリティ「timeout」を使用できます。
timeout -s KILL 1m ./test
上記のコマンドはtest
実行可能ファイルを1分間実行し、タイムアウト後に実行を継続すると、コマンドはタイムアウトし、KILL
ユーティリティによってプロセスを強制終了します。