Jenkins的构建步骤超时
在Jenkins中,是否有方法为每个或选定的构建步骤指定不同的超时时间?Jenkins的构建步骤超时,jenkins,build-process,build-automation,jenkins-plugins,Jenkins,Build Process,Build Automation,Jenkins Plugins,在Jenkins中,是否有方法为每个或选定的构建步骤指定不同的超时时间? Build time plugin out在整个项目中提供了超时功能“如果卡住了就中止构建”,我需要的是为每个步骤提供不同的超时。这样我可以使我的过程更高效。最简单的方法(我就是这样做的)就是让不同的项目相互依赖,并将它们排成一行。这并不完美,但另一个选择是使用不同的工具/构建行为监控不同插件的执行 尽管如此,这种方法还是会奏效的,尽管它确实很糟糕 顺便说一句,有一个很好的插件,可以帮助你使用一套项目-。我现在正在使用它来
Build time plugin out在整个项目中提供了超时功能“如果卡住了就中止构建”,我需要的是为每个步骤提供不同的超时。这样我可以使我的过程更高效。最简单的方法(我就是这样做的)就是让不同的项目相互依赖,并将它们排成一行。这并不完美,但另一个选择是使用不同的工具/构建行为监控不同插件的执行 尽管如此,这种方法还是会奏效的,尽管它确实很糟糕
顺便说一句,有一个很好的插件,可以帮助你使用一套项目-。我现在正在使用它来可视化和验证我创建的管道。它真的很方便…据我所知,没有这样的功能。请求它。我想这可能是你想要的。这是假设您的构建步骤是脚本。对于Jenkins的当前版本,这是可以完成的。点击“配置”,然后选择“构建环境”选项卡,然后设置超时 以下是一个屏幕截图:
在管道作业中,您可以使用
超时来包装步骤,如下所示:
timeout(time: 5, unit: 'MINUTES') {
// steps to execute
}
如果您不想使用Jenkins插件,并且想使脚本或任何命令超时,那么可以使用Linux内置实用程序“timeout”
上述命令将运行test
可执行文件1分钟,如果超时后继续执行,则该命令将超时并通过kill
实用程序终止进程。这个问题最初是在Jenkins管道存在之前提出的。尽管您可以通过GUI继续使用和配置Jenkins,但目前建议您将项目转换到管道。使用管道可以跟踪对管道的更改,并将其存储为代码,这样,如果需要移动Jenkins服务器,就可以轻松地在任何机器上重新创建构建
使用管道,为构建的特定部分添加超时是很简单的。管道语法简单易用
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?', submitter: 'it-ops'
}
相关问题:
示例无耻地取自:构建超时插件不适用于管道。指
对于管道超时,请尝试以下操作:
timeout(time: 30, unit: 'MINUTES') {
node {
sh 'foo'
}
}
来自另一个线程的类似答案:
如果您使用的是Jenkins管道和较新的声明式样式(具有顶级管道{
元素),则有一个超时选项
,可用于整个作业或单个阶段:
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS') // timeout on whole pipeline job
}
stages {
stage('Example') {
options {
timeout(time: 1, unit: 'HOURS') // timeout on this stage
}
steps {
echo 'Hello World'
}
}
}
}
文档:请为您的Jenkins安装构建超时插件
詹金斯>管理詹金斯>管理插件
在“可用”选项卡中搜索生成超时。。
安装它。
在构建环境中,您会发现它是“如果被卡住,则中止构建”。
设置超时策略和时间。
绝对的
截止日期
有弹力的
可能卡住了
没有活动
就我而言,我没有使用任何活动
希望能有所帮助。这项功能介绍了Jenkins的哪个版本?抱歉,目前还不确定详细信息,因为我的Jenkins应用了更新。但是,Jenkins()中的这期已结束显示生成超时插件在2014年5月处于活动状态。HTH。该超时会导致管道失败,还是会继续执行下一步?也许完整的示例会有所帮助。一旦超时过去,而仍在执行任何步骤,接下来的所有操作都会被取消,整个作业以失败状态结束。以下是管道脚本中的使用方法:管道{agent{label'xxx'}选项{timestamps();超时(时间:2,单位:'HOURS')}阶段{stage('stage-One'){步骤{/*此处的一个或多个步骤*/}
}如何使管道在一个步骤因超时而中止后仍然成功?如果您需要在超时过期后继续执行其他步骤,您可以使用try/catch将其包围,然后继续正常执行。但请记住,这只能应用于一个步骤内。例如:``步骤{try{timeout(时间:5,单位:'MINUTES')){//在这5分钟内执行的步骤}}捕获(异常e){//在此处执行任何操作}//在此处继续执行其他步骤}```这应该是可接受的答案。
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS') // timeout on whole pipeline job
}
stages {
stage('Example') {
options {
timeout(time: 1, unit: 'HOURS') // timeout on this stage
}
steps {
echo 'Hello World'
}
}
}
}