0

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

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

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

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

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

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

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

请帮忙 :)

谢谢!

4

1 回答 1

1

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

于 2018-10-11T19:41:34.703 回答