仅对其中一个工具应用质量门

Apply a quality gate to only one of the tools

我有一系列构建 bitbucket 拉取请求的 jenkins pipeline 作业。 这些管道有一个质量阶段,它使用 warningsng 记录 GCC 警告和 Coverity 缺陷的问题(通过通用问题工具)。

我管道的相关部分是:

post {
    always {
        recordIssues(
           blameDisabled: true,
           forensicsDisabled: true,
           tools: [gcc(id: "${env.PRODUCT}-static-gcc",
                       name: "${PRODUCT} GCC warnings",
                       pattern: "rw/build-analysis.log"),
                   issues(id: "${env.PRODUCT}-coverity-defects",
                          name: "${PRODUCT} Coverity Defects",
                          pattern: "rw/warning-ng-defects-*.xml")]
        )
    }
}

由于我们已经正常修复了所有 GCC 警告,但我们仍然存在很多 Coverity 缺陷,我想对 gcc 工具应用质量门,以拒绝 pull带有警告的请求,但不是问题,因为我们现在接受,拉取请求仍然存在 Coverity 缺陷。

但我的理解是,通过阅读管道语法步骤参考,质量门适用于 recordIssues 中的整个工具列表,但似乎并不适用仅适用于其中一种工具。

这是我尝试过的:

post {
    always {
        recordIssues(
           blameDisabled: true,
           forensicsDisabled: true,
           tools: [gcc(id: "${env.PRODUCT}-static-gcc",
                       name: "${PRODUCT} GCC warnings",
                       pattern: "rw/build-analysis.log",
                       qualityGates: [[threshold: 1, type: 'TOTAL', unstable: true]]),
                   issues(id: "${env.PRODUCT}-coverity-defects",
                          name: "${PRODUCT} Coverity Defects",
                          pattern: "rw/warning-ng-defects-*.xml")]
        )
    }
}

但根据文档,它被简单地忽略似乎合乎逻辑。

那么,有没有办法将质量门应用到工具列表中的一个工具,在 recordIssues 中?

所以最后,解决方案很简单,“仅”包括使用 recordIssues 两次。这对我有用:

post {
    always {
        recordIssues(
           blameDisabled: true,
           forensicsDisabled: true,
           tool: issues(id: "${env.PRODUCT}-coverity-defects",
                        name: "${PRODUCT} Coverity Defects",
                        pattern: "rw/warning-ng-defects-*.xml")
        )
        recordIssues(
           blameDisabled: true,
           forensicsDisabled: true,
           qualityGates: [[threshold: 1, type: 'TOTAL', unstable: false]],
           tool: gcc(id: "${env.PRODUCT}-static-gcc",
                     name: "${PRODUCT} GCC warnings",
                     pattern: "rw/build-analysis.log")
        )
    }
}

非常感谢@MattSchuchard!