如何确保拉取请求中的文件已更改

时间:2018-05-24 09:47:25

标签: git gradle bitbucket jenkins-pipeline

首先快速介绍设置:

因此,在我们的设置中,我们使用gradle和artifactory来发布新构建和获取依赖项,结合jenkins用于管道和git与bitbucket进行源代码控制。在我们的设置中,任何对master的拉动都会通过bitbucket中的pull请求,它必须通过jenkinsfile中定义的门和审阅。一旦这些已经过去,用户就可以合并请求。

因为我们有一个设置,我们有许多git repos,每个都可以单独发布,所以当用户将他们的更改提取到master时,用户必须记住正确地修改语义版本(因为每个构建都在master上运行,将构建的输出发布到artifactory)。 因此,为了确保人们记得更新语义版本,我想检查gradle.properties文件是否与创建分支的点相比发生了变化 - 但由于我们在jenkins服务器上使用浅克隆,因此没有关于这个。所以正常的“git diff”命令不起作用。 (我的git-fu不是很强大,但我试图谷歌到目前为止没有任何工作)。

另一个解决方案可能是bitbucket中的一个钩子,它拒绝PR,它对语义版本没有任何改变。但我还没有找到这样的插件。

第三个选项是一个githook,它只是在创建分支时碰到它,但我希望用户100%意识到该版本已经崩溃,因为有时候主要,次要或补丁是非常重要的版本已经增加。 (如果人们在jira / bitbucket中创建分支,这可能无效......)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

无法相信,但我有完全相同的设置:)对我来说最简单的解决方案是我有工作发布到aritifactory(发布阶段),但在他们这样做之前他们创建了一个git标签(标记阶段)基于gradle.properties中的版本。现在,如果该标记已存在,则推送它将失败。假设你有标签v1234而你做了
git tag v1234 - 会奏效
git push --tags - 将失败
我也通知bitbucket有关失败的构建,然后人们可以看到它发生,因为git标签已经存在意味着他们没有更新版本

相关问题