Jenkins + Git/Gerrit + Incremental Klocwork Scans



所以我们有一个 Jenkins 服务器,我们使用 gerrit 来代码审查我们的开发分支,我们安装了 Klocwork 社区插件。

我们的 Jenkins 生成了对 Gerrit 补丁集推送进行 +1 验证投票的构建。

目前,我们只在合并的开发分支上每隔几个小时扫描一次 Klocwork,我想在每次补丁集推送时执行增量/差异扫描,以防止坏代码首先通过。

所以我在我们的 Jenkins 构建配置中设置了 Klocwork 插件,但是当我添加增量扫描构建步骤时,由于我们使用的是 Git,它需要我输入以前的提交 SHA。 我已经尝试了一切,但没有成功。

我尝试了$GIT_PREVIOUS_SUCCESS_COMMIT,但它似乎不起作用,而且对我们来说似乎是错误的,因为之前的 Jenkins 提交可能基于一个完全不同的分支(父级(,所以更改的内容的差异没有意义。

然后我们有了这样的想法,即它应该比较的上一个提交是父 SHA,不一定是最后一个 Jenkins 构建,它可能在同一个分支上,也可能不在同一分支上。
所以我在构建之前添加了一个 windows 批处理文件构建步骤,该步骤使用 git log 获取父 SHA1,将其通过管道传输到文件,然后使用 SET 设置一个 env 变量,例如使用该 SHA1 的 PARENT_COMMIT,然后我尝试在 Klocwork 增量的"上一个提交 SHA"区域中使用 %PARENT_COMMIT%,构建失败,因为它找不到变量。

我觉得这是一件很常见的事情,所以解决方案一定是愚蠢的简单,我们正在让它比它需要的更复杂,但我一生都找不到任何文档告诉我到底要把什么放在这个盒子里。

请帮忙:)

谢谢!

您是否正在使用 Jenkins gerrit-trigger 插件来触发构建,对吗?因此,您可以尝试使用 $GERRIT_PATCHSET_REVISION^,它是由环境变量 GERRIT_PATCHSET_REVISION 定义的 SHA1 的第一个父级。

最新更新