Jenkins + Git/Gerrit + 增量 Klocwork 扫描

Jenkins + Git/Gerrit + Incremental Klocwork Scans

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

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

目前,我们仅在合并后的 Develop 分支上每隔几个小时扫描一次 Klocwork,我想改为对每个补丁集推送执行 incremental/diff 扫描,以防止错误代码首先通过。

所以我在我们的 Jenkins 构建配置中设置了 Klocwork 插件,但是当我添加一个增量扫描构建步骤时,因为我们使用 Git 它需要我输入一个 Previous Commit SHA。我什么都试过了,但没有成功。

我试过 $GIT_PREVIOUS_SUCCESSFUL_COMMIT,但它似乎没有用,而且对我们来说似乎是错误的,因为之前的 Jenkins 提交可能基于一个完全不同的分支(父分支),所以改变的差异不会使感觉。

然后我们想到它应该比较的前一个提交是父 SHA,不一定是最后一个 Jenkins 构建,它可能在也可能不在同一个分支上。
所以我在我们的构建之前添加了一个 windows 批处理文件构建步骤,该步骤使用 git 日志获取父 SHA1,将其通过管道传输到一个文件,然后使用 SET 设置一个环境变量,如 PARENT_COMMIT使用那个 SHA1,然后我尝试在 Klocwork incremental 的 "Previous Commit SHA" 区域使用 %PARENT_COMMIT% 并且构建失败,因为它找不到 var.

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

请帮忙:)

谢谢!

您是否使用 Jenkins gerrit-trigger 插件来触发构建,对吗?所以你可以尝试使用 $GERRIT_PATCHSET_REVISION^,它是由环境变量 GERRIT_PATCHSET_REVISION.

定义的 SHA1 的第一个父级