当你使用自由样式的项目时,你可以设置20分钟后,如果没有完成,构建就会中止。Jenkins多分支管道项目如何实现这一点?
1qczuiv01#
您可以使用超时步骤:
timeout(20) { node { sh 'foo' } }
如果你需要一个不同于TimeUnit的参数,你可以提供unit参数:
TimeUnit
unit
timeout(time: 20, unit: 'SECONDS') {
**2018年8月编辑:**现在有了更常见的声明性管道(很容易被顶级pipeline结构识别),超时也可以在不同级别上使用options指定(每个整体管道或每个阶段):
pipeline
options
pipeline { options { timeout(time: 1, unit: 'HOURS') } stages { .. } // .. }
但是,如果您想将超时应用于声明性管道中的单个步骤,则可以如上所述使用它。
qf9go6mv2#
对于声明式管道,建议使用选项部分中的超时步骤。在块内执行代码,并具有确定的超时限制。如果达到了时间限制,就会抛出一个异常(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException),导致构建中止(除非它被捕获并以某种方式处理)。单位是可选的,但默认为分钟。超时步骤有3个参数可以配置:
*time(required,int)
示例如下:
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' } } } }
disbfnqx3#
在声明性管道中,您可以用途:
pipeline { agent any stages { stage('Deploy') { steps { retry(3) { sh './flakey-deploy.sh' } timeout(time: 3, unit: 'MINUTES') { sh './health-check.sh' } } } } }
k4emjkb14#
对于DeclarativePipeline(整个作业超时):
pipeline { options { timeout(time: 3, unit: 'HOURS') } agent { label 'agent_name' } stages { stage('Stage_name') { steps { // ... } } } // ... }
对于ScriptedPipeline(整个作业超时):
def call() { node('agent_name') { timeout(time: 3, unit: 'HOURS') { stage('Stage_name') { // ... } } } }
在阶段内执行**(用于特定操作):
声明性管道
pipeline { agent { label 'agent_name' } stages { stage('Stage_name') { steps { timeout(time: 3, unit: 'HOURS') { sh ' ... ' echo '...' // ... } // ... } } } }
脚本管道
def call() { node('agent_name') { stage('Stage_name') { timeout(time: 3, unit: 'HOURS') { sh '...' echo '...' // ... } // ... } } }
57hvy0tb5#
使用后台文件中的选项设置超时。这仅适用于单级,而不是整个管线。
pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }
超时单位可以是:
NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS
参考:https://www.jenkins.io/doc/book/pipeline/syntax/#optionshttps://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#timeout-enforce-time-limit
5条答案
按热度按时间1qczuiv01#
您可以使用超时步骤:
如果你需要一个不同于
TimeUnit
的参数,你可以提供unit
参数:**2018年8月编辑:**现在有了更常见的声明性管道(很容易被顶级
pipeline
结构识别),超时也可以在不同级别上使用options
指定(每个整体管道或每个阶段):但是,如果您想将超时应用于声明性管道中的单个步骤,则可以如上所述使用它。
qf9go6mv2#
对于声明式管道,建议使用选项部分中的超时步骤。
在块内执行代码,并具有确定的超时限制。如果达到了时间限制,就会抛出一个异常(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException),导致构建中止(除非它被捕获并以某种方式处理)。单位是可选的,但默认为分钟。
超时步骤有3个参数可以配置:
*time(required,int)
*activity(可选,布尔值)
*单位(可选,取值:纳秒、微秒、毫秒、小时、天)
*时间单位,默认为秒
示例如下:
Jenkins的官方文档中有一个非常好的使用超时的例子:
disbfnqx3#
在声明性管道中,您可以用途:
k4emjkb14#
对于DeclarativePipeline(整个作业超时):
对于ScriptedPipeline(整个作业超时):
在阶段内执行**(用于特定操作):
声明性管道
脚本管道
57hvy0tb5#
使用后台文件中的选项设置超时。这仅适用于单级,而不是整个管线。
超时单位可以是:
参考:
https://www.jenkins.io/doc/book/pipeline/syntax/#options
https://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#timeout-enforce-time-limit