フリースタイルのプロジェクトを使用している場合、20分後に終了しない場合にビルドを中止するように設定できます。Jenkins Multi Branch Pipeline Projectでこれはどのように可能ですか?
回答:
タイムアウトステップを使用できます。
timeout(20) {
node {
sh 'foo'
}
}
MINUTESTimeUnit
以外のものが必要な場合は、引数を指定できます。unit
timeout(time: 20, unit: 'SECONDS') {
2018年8月の編集:最近では、より一般的な宣言型パイプライン(最上位のpipeline
構造で簡単に認識される)を使用options
して、さまざまなレベル(パイプライン全体またはステージごと)でタイムアウトを指定することもできます。
pipeline {
options {
timeout(time: 1, unit: 'HOURS')
}
stages { .. }
// ..
}
それでも、宣言的パイプラインの単一のステップにタイムアウトを適用する場合は、上記のように使用できます。
def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }
。ノードを2回取得するトリッキーな方法です。1回目は外部タイムアウト、2回目は内部タイムアウトです。機能もありません。
以下のために宣言型パイプラインには、使用するadvicedされたタイムアウトステップにおけるオプション・セクションを。
決められたタイムアウト制限でブロック内のコードを実行します。時間制限に達すると、例外(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException)がスローされ、ビルドが中止されます(何らかの方法でキャッチおよび処理されない限り)。単位はオプションですが、デフォルトは分です。
タイムアウトステップには、構成可能な3つのパラメーターがあります。
時間(必須、整数)
アクティビティ(オプション、ブール)
単位(オプション、値:NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS、MINUTES、HOURS、DAYS)
例:
timeout(time: 10) // would lead to a timeout of 10 minutes (MINUTES is default value)
timeout(time: 10, unit: 'SECONDS') // a 10 seconds timeout
timeout(time: 10, activity: false, unit: 'MILLISECONDS')
Jenkinsの公式ドキュメントには、タイムアウトの使用に関する非常に優れた例があります。
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
activity
デフォルトはfalseです。activity
がfalseの場合-ジョブ全体のtrue
タイムアウト、アクティビティのタイムアウト(ログに何かを出力するため)。
timeout
特定のステージを追加して、後続のステージが正常に実行されるようにします。上記の例では、タイムアウト後にパイプラインが中止され、後続のステージは実行されません。私の要件を達成する方法はありますか?特定のステージのタイムアウトのサンプルコード(公式Jenkins Docから):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/
→ ステップリファレンスでも利用できます。