詹金斯构建步骤的超时

在 Jenkins 中,是否有方法为每个或选定的构建步骤提供不同的超时?
构建时插件提供了超时的功能“中止构建,如果它被卡住”在完整的项目,我需要的是给每一步不同的超时。这样我可以使我的过程更有效率。

133631 次浏览

最简单的方法(这也是我正在做的方法)是实际上让不同的项目相互依赖,并将它们一行一行地构建起来。它并不完美,但是另一种选择是使用不同的工具/构建行为来监视不同插件的执行。

尽管如此,这种方法还是会奏效的,尽管它确实很糟糕... ..。

顺便说一下,有一个很好的插件,可以帮助你出使用一套项目-构建管道插件。我现在正在使用它来可视化和验证我创建的管道。真的很方便。

没有这样的功能,我知道。 JENKINS-8900请求它。

我认为 来自 GNU coreutils 的 timeout命令可能是你想要的。这是在您的构建步骤是脚本的假设下进行的。

至于目前版本的詹金斯,这是可以做到的。点击“配置”,然后选择“构建环境”选项卡,然后设置您的超时。

下面是一个截图: enter image description here

在管道作业中,您可以用 timeout包装您的步骤,如下所示:

timeout(time: 5, unit: 'MINUTES') {
// steps to execute
}

如果您不想使用 Jenkins 插件,而想超时一个脚本或任何命令,那么您可以使用 Linux 内置实用程序“ timeout”。

timeout -s KILL 1m ./test

上面的命令将运行 test可执行文件1分钟,如果在超时后继续执行,那么该命令将超时并通过 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 {
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。

希望对你有帮助。