You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline如何捕获特定错误重试构建?替代Naginator插件方案

Jenkins Pipeline中捕获特定错误并重试的实现方案

当然可行!Jenkins Pipeline的灵活性完全能满足你捕获特定构建错误后重试的需求,甚至比Naginator插件的正则匹配更灵活可控。针对你提到的make命令因pg_config.h missing失败的场景,我给你两种实用的实现方案:

方案一:使用内置retry结合异常捕获

这是最简洁的方式,利用Pipeline内置的retry步骤配合try-catch来精准触发重试:

retry(3) { // 指定最多重试3次
    try {
        sh 'make' // 执行你的构建命令
    } catch (Exception e) {
        // 检查异常信息是否包含目标错误字符串
        if (e.getMessage().contains('pg_config.h missing')) {
            echo "检测到'pg_config.h missing'错误,准备重试..."
            throw e // 抛出异常触发retry机制
        } else {
            // 遇到非目标错误直接终止构建,不重试
            error "遇到非预期错误,终止构建:${e.getMessage()}"
        }
    }
}

逻辑说明:

  • retry(3)会包裹代码块,一旦代码块抛出异常就自动重试,最多3次
  • 在catch块里判断异常信息是否是你要匹配的错误,只有目标错误才会触发重试,其他错误直接终止

方案二:自定义循环实现灵活重试(支持间隔等待)

如果需要更复杂的逻辑(比如重试前等待一段时间),可以用自定义循环来控制:

def maxRetries = 3
def retryCount = 0
def buildSuccess = false

while (retryCount < maxRetries && !buildSuccess) {
    try {
        sh 'make'
        buildSuccess = true
        echo "构建成功!"
    } catch (Exception e) {
        retryCount++
        if (e.getMessage().contains('pg_config.h missing') && retryCount < maxRetries) {
            echo "第${retryCount}次重试:检测到'pg_config.h missing'错误,还剩${maxRetries - retryCount}次机会"
            sleep(time: 30, unit: 'SECONDS') // 可选:重试前等待30秒,避免频繁重试
        } else {
            error "重试${retryCount}次后仍失败,或遇到非预期错误:${e.getMessage()}"
        }
    }
}

额外注意:

有些情况下,构建错误可能只输出在控制台日志,而不是直接包含在Exception的message里。这时候可以直接捕获命令的输出内容来判断:

retry(3) {
    // 执行make命令并捕获输出和返回状态
    def makeResult = sh(script: 'make', returnStdout: true, returnStatus: true)
    if (makeResult != 0) {
        // 重新执行一次获取完整输出(也可以在第一次就保存)
        def output = sh(script: 'make', returnStdout: true)
        if (output.contains('pg_config.h missing')) {
            echo "检测到目标错误,触发重试..."
            error "触发重试:pg_config.h missing"
        } else {
            error "构建失败,错误信息:${output}"
        }
    }
}

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:41:01