在Jenkins,有没有办法为每个或选定的构建步骤提供不同的超时? 构建时插件提供了超时功能“如果它被卡住了就完成项目中止”,我需要的是为每个步骤提供不同的超时。这样我就可以提高我的流程效率。
答案 0 :(得分:13)
答案 1 :(得分:6)
我没有注意到这样的功能。 JENKINS-8900请求它。
答案 2 :(得分:4)
在管道作业中,您可以使用timeout
包装步骤,如下所示:
timeout(time: 5, unit: 'MINUTES')
{
// steps to execute
}
答案 3 :(得分:3)
I think the timeout
command from GNU coreutils might be what you want. This is under the assumption that your build steps are scripts.
答案 4 :(得分:2)
最简单的方法(也就是我这样做的方式)实际上是让不同的项目彼此依赖并将它们连续构建。它并不完美,但另一种选择是监视具有不同工具/构建行为的不同插件的执行。
尽管如此,这种做法仍然有效......
顺便说一下,有一个很好的插件可以帮助你使用一组项目 - Build Pipeline plugin。我现在正在使用它来可视化和验证我创建的管道。这真的很方便......答案 5 :(得分:1)
如果您不想使用Jenkins插件并希望超时脚本或任何命令,那么您可以使用Linux内置实用程序" timeout"。
timeout -s KILL 1m ./test
上面的命令将运行test
可执行文件1分钟,如果它在超时后继续执行,那么命令将超时并通过KILL
实用程序终止进程。
答案 6 :(得分:1)
Build-timeout插件不适用于管道。请参阅wiki
对于管道超时,请尝试以下操作:
timeout(time: 30, unit: 'MINUTES') {
node {
sh 'foo'
}
}
另一个线程的类似答案: How to add a timeout step to Jenkins Pipeline
答案 7 :(得分:0)
这个问题最初是在Jenkins Pipeline存在之前提出的。虽然您可以继续通过GUI使用和配置Jenkins,但目前建议将项目转换为管道。使用Pipeline可以跟踪管道的更改,并将其存储为代码,以便在需要移动Jenkins服务器时,可以在任何计算机上轻松重建构建。
使用管道,在构建的一个非常特定的部分添加超时是微不足道的。管道语法简单易用。
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?', submitter: 'it-ops'
}
相关问题:How to add a timeout step to Jenkins Pipeline
无耻地取自CloudBees Top 10 Best Practices for Jenkins Pipeline Plugin
的例子答案 8 :(得分:0)
如果您使用的是Jenkins管道,并且使用了较新的声明式样式(具有顶级pipeline {
元素),则可以使用timeout
option
来完成整个工作,或在各个阶段:
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'
}
}
}
}
答案 9 :(得分:0)
请为您的Jenkins安装Build Timeout插件。
Jenkins>管理Jenkins>管理插件
在可用选项卡中搜索构建超时。 安装它。 您将在Build环境中找到它,例如“如果卡住,则中止构建”。 设置超时策略和时间。 绝对 最后期限 有弹性 可能卡住了 没有活动
就我而言,我没有使用“活动”。
希望有帮助。