web-dev-qa-db-ja.com

Jenkinsのビルドステップのタイムアウト

Jenkinsでは、各ビルドステップまたは選択したビルドステップに異なるタイムアウトを与える方法はありますか?
ビルド時のプラグイン出力は、プロジェクト全体で「スタックが発生した場合はビルドを中止する」というタイムアウト機能を提供します。必要なのは、ステップごとに異なるタイムアウトを設定することです。このようにして、プロセスをより効率的にすることができます。

32
rohits

Jenkinsの現在のバージョンでは、これを行うことができます。 [構成]をクリックして、[環境の構築]タブを選択し、タイムアウトを設定します。

これがスクリーンショットです: enter image description here

17
JESii

パイプラインジョブでは、次のようにtimeoutでステップをラップできます。

timeout(time: 5, unit: 'MINUTES') { // steps to execute }

7
katrash

私が知っているような機能はありません。 JENKINS-89 要求します。

6
Jesse Glick

GNU coreutilsからのtimeoutコマンド があなたの望むものだと思います。これは、ビルド手順がスクリプトであることを前提としています。

3
Ian

最も簡単な方法(それが私が行っている方法です)は、実際には互いに依存する異なるプロジェクトを持ち、それらを連続して構築することです。それは完璧ではありませんが、他のオプションは、異なるツール/ビルド動作で異なるプラグインの実行を監視することです。

それでも、アプローチはうまくいきますが、それは残念です...

ところで、プロジェクトのセットを使用するのを助けることができる素敵なプラグインがあります- Build Pipeline plugin 。現在、作成したパイプラインの視覚化と検証の両方に使用しています。本当に便利です...

2
Łukasz Rżanek

ビルドタイムアウトプラグインは、パイプラインには適用されません。 wiki を参照してください

パイプラインのタイムアウトについては、次のようなものを試してください:

timeout(time: 30, unit: 'MINUTES') {
  node {
    sh 'foo'
  }
}

別のスレッドからの同様の回答: タイムアウトステップをJenkins Pipelineに追加する方法

2
Chuan

この質問は、ジェンキンスパイプラインが存在する前に最初に尋ねられました。 GUIを使用して引き続きJenkinsを使用および構成できますが、現在、プロジェクトをパイプラインに移行することをお勧めします。パイプラインを使用すると、パイプラインへの変更を追跡し、コードとして保存して、Jenkinsサーバーを移動する必要がある場合に任意のマシンでビルドを簡単に再作成できます。

パイプラインを使用して、ビルドの非常に特定の部分にタイムアウトを追加するのは簡単です。パイプライン構文はシンプルで使いやすいです。

timeout(time:5, unit:'DAYS') {
    input message:'Approve deployment?', submitter: 'it-ops'
}

関連質問: Jenkins Pipelineにタイムアウトステップを追加する方法

恥知らずに取られた例: CloudBees Jenkins Pipeline Pluginのベストプラクティストップ1

1
Alex Lowe

Jenkinsプラグインを使用しないで、スクリプトまたはコマンドをタイムアウトする場合は、Linuxの組み込みユーティリティ「timeout」を使用できます。

timeout -s KILL 1m ./test

上記のコマンドはtest実行可能ファイルを1分間実行し、タイムアウト後に実行を継続すると、コマンドはタイムアウトし、KILLユーティリティによってプロセスを強制終了します。

1
Hemant