Jenkins使用声明性语法在构建失败后如何重新触发构建

39次阅读
没有评论

问题描述

在使用声明性流水线语法时,用户想要在构建失败后重新触发构建,最多尝试3次。他希望将此步骤添加到流水线中,可能在后处理步骤中,类似于以下示例:

post {
     failure {
         retrigger //尝试至少3次
     }
}

解决方案

请注意以下操作可能因版本差异而有所不同。

最佳解决方案

在Jenkins中,你可以使用内置的 retry 步骤来重新尝试构建的某些部分。如果想要整个构建重新尝试三次,你可以将整个作业包裹在 retry 块中,也可以在适当的地方包裹单个步骤或阶段。
以下是如何实现的步骤:

1. 包裹整个作业

retry(count: 3) {
    // 在这里定义你的整个作业
}

2. 包裹单个步骤或阶段

stage('我的第一个阶段') {
    retry(count: 3) {
        sh('某些命令')
        sh('另一些命令')
    }
}

通过将 retry 块放置在适当的位置,你可以确保失败的部分会在规定的次数内重新尝试。

其他解决方案

如果想要在构建失败后在后处理步骤中重新触发整个作业,可以使用 catchErrorretry 的组合。不过,这种方法需要在Jenkins Pipeline中使用Scripted Pipeline语法。

以下是示例代码:

pipeline {
    agent any
    stages {
        stage('my stage') {
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    retry(3) {
                        // 定义你的构建步骤
                    }
                }
            }
        }
    }
}

在上面的示例中,catchError 捕获构建失败并将其状态更改为成功,然后 retry 重新尝试构建步骤。

请根据你的实际需求选择合适的解决方案。记住,在使用任何解决方案之前,最好在测试环境中进行测试,以确保其正常工作。

正文完