仅对其中一个工具应用质量门
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!
我有一系列构建 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!