当您使用自由样式项目时,您可以设置在20分钟后,如果没有结束,则构建中止。如何使用Jenkins多分支管道项目实现这一目标?
答案 0 :(得分:121)
您可以使用timeout步骤:
timeout(20) {
node {
sh 'foo'
}
}
如果您需要与 MINUTES 不同的TimeUnit
,则可以提供unit
参数:
timeout(time: 20, unit: 'SECONDS') {
2018年8月编辑:现在有了更常见的declarative pipelines(由顶级pipeline
构造轻松识别),也可以使用{{3}指定超时在不同级别(每个整个管道或每个阶段):
pipeline {
options {
timeout(time: 1, unit: 'HOURS')
}
stages { .. }
// ..
}
但是,如果要对声明性管道中的单个步骤应用超时,可以按上述方式使用它。
答案 1 :(得分:6)
对于Declarative Pipeline,建议在timeout step中使用options-section。
以确定的超时限制执行块内的代码。 如果达到时间限制,则出现异常 (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException)是 抛出,导致中止构建(除非它被捕获并 处理过)。单位是可选的,但默认为分钟。
超时步骤有3个parameters,您可以配置:
时间(必填,整数)
活动(可选,布尔值)
单位(可选,值: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')
official Jenkins documentation有一个很好的超时示例:
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
答案 2 :(得分:2)
在声明式管道中,您可以使用:
pipeline {
agent any
stages {
stage('Deploy') {
steps {
retry(3) {
sh './flakey-deploy.sh'
}
timeout(time: 3, unit: 'MINUTES') {
sh './health-check.sh'
}
}
}
}
}