跳过正文
  1. Posts/

Jenkins 作业超时后让构建失败的方法(已解决)

·331 字·1 分钟· ·
沈显鹏
作者
沈显鹏
目录

在一些情况下,即使设置了超时,Jenkins 作业依然不会因为超时自动失败,比如某些进程没有正常结束。

为了解决这个问题,可以在流水线中结合 try .. catcherror,在超时后显式让构建失败。


示例代码
#

pipeline {
    agent none
    stages {
        stage('Hello') {
            steps {
                script {
                    try {
                        timeout(time: 1, unit: 'SECONDS') {
                            echo "timeout step"
                            sleep 2
                        }
                    } catch (err) {
                        // 捕获超时异常
                        println err
                        echo 'Time out reached.'
                        error 'build timeout failed'
                    }
                }
            }
        }
    }
}

日志输出
#

[Pipeline] Start of Pipeline
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] script
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 1 sec
[Pipeline] {
[Pipeline] echo
timeout step
[Pipeline] sleep
Sleeping for 2 sec
Cancelling nested steps due to timeout
[Pipeline] }
[Pipeline] // timeout
[Pipeline] echo
org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
[Pipeline] echo
Time out reached.
[Pipeline] error
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
ERROR: build timeout failed
Finished: FAILURE

总结
#

  • timeout 步骤会在超时后抛出 FlowInterruptedException
  • 通过 try/catch 捕获异常后调用 error,可以强制让 Jenkins 构建标记为 FAILURE
  • 这种方式适用于任何需要在超时后终止并失败的场景

转载请注明作者与出处,欢迎关注公众号「DevOps攻城狮」获取更多 Jenkins 实战技巧。

相关文章

Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkins 升级后 Windows Agent 无法启动的解决方法
·325 字·1 分钟
本文介绍 Jenkins 升级后 Windows Agent 无法启动的问题,以及通过更新 Windows Slaves 插件和修改配置文件来解决的步骤。
解决在 AIX 上 Git Clone 失败的两个问题
·1279 字·3 分钟
本文记录了在 AIX 上使用 Jenkins 进行 Git Clone 时遇到的两个问题及其解决方法,包括依赖库加载失败和 SSH 认证失败。
解决 ESlint HTML 报告在 Jenkins 作业中无法正常显示的问题
·331 字·1 分钟
本文记录了 ESlint HTML 报告在 Jenkins 中因内容安全策略(CSP)限制而无法正确显示的问题,并介绍了如何通过修改 Jenkins 配置使报告正常加载。
在 Jenkins 中为不同分支设置不同的默认参数
·408 字·1 分钟
本文介绍如何在 Jenkins 多分支流水线中,根据构建分支动态设置不同的默认参数,从而实现分支差异化配置。