在 Jenkins 中,是否有方法为每个或选定的构建步骤提供不同的超时? 构建时插件提供了超时的功能“中止构建,如果它被卡住”在完整的项目,我需要的是给每一步不同的超时。这样我可以使我的过程更有效率。
最简单的方法(这也是我正在做的方法)是实际上让不同的项目相互依赖,并将它们一行一行地构建起来。它并不完美,但是另一种选择是使用不同的工具/构建行为来监视不同插件的执行。
尽管如此,这种方法还是会奏效的,尽管它确实很糟糕... ..。
顺便说一下,有一个很好的插件,可以帮助你出使用一套项目-构建管道插件。我现在正在使用它来可视化和验证我创建的管道。真的很方便。
没有这样的功能,我知道。 JENKINS-8900请求它。
我认为 来自 GNU coreutils 的 timeout命令可能是你想要的。这是在您的构建步骤是脚本的假设下进行的。
timeout
至于目前版本的詹金斯,这是可以做到的。点击“配置”,然后选择“构建环境”选项卡,然后设置您的超时。
下面是一个截图:
在管道作业中,您可以用 timeout包装您的步骤,如下所示:
timeout(time: 5, unit: 'MINUTES') { // steps to execute }
如果您不想使用 Jenkins 插件,而想超时一个脚本或任何命令,那么您可以使用 Linux 内置实用程序“ timeout”。
timeout -s KILL 1m ./test
上面的命令将运行 test可执行文件1分钟,如果在超时后继续执行,那么该命令将超时并通过 KILL实用程序终止进程。
test
KILL
这个问题最初是在詹金斯输油管存在之前提出的。虽然您可以通过 GUI 继续使用和配置 Jenkins,但是目前建议将您的项目转换到管道。使用管道允许您跟踪对管道的更改,并将其存储为代码,这样,如果需要移动 Jenkins 服务器,就可以很容易地在任何机器上重新创建构建。
使用管道,向构建的非常特定的部分添加超时是微不足道的。管道语法简单易用。
timeout(time:5, unit:'DAYS') { input message:'Approve deployment?', submitter: 'it-ops' }
相关问题: 如何向 Jenkins 管道添加超时步骤
无耻的例子取自: CloudBees Jenkins 管道插件的10大最佳实践
构建超时插件不适用于管道。请参阅 维基百科
对于管道超时,可以尝试这样的操作:
timeout(time: 30, unit: 'MINUTES') { node { sh 'foo' } }
来自另一个帖子的类似答案: 如何向 Jenkins 管道添加超时步骤
如果您使用的是 Jenkins 流水线,并且较新的声明式样(有一个顶级的 pipeline {元素) ,那么有一个 timeout option可以用于整个作业,或者单独的阶段:
pipeline {
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' } } } }
医生: https://jenkins.io/doc/book/pipeline/syntax/#options
请为您的 Jenkins 安装 Build Timeout 插件。
Jenkins > Manage Jenkins > Manage Plugins
在可用选项卡中搜索“生成超时”。 安装它。 在构建环境中,您会发现它是“如果构建被卡住,则中止构建”。 设置超时策略和时间。 当然 截止日期 有弹性 可能卡住了 无活动
在我的例子中,我使用了 No Activity。
希望对你有帮助。