首先简要介绍一下设置:
因此,在我们的设置中,我们使用 gradle 和一个工件来发布新构建和获取依赖项,结合 jenkins 用于管道,以及 git 和 bitbucket 用于源代码控制。在我们的设置中,任何对 master 的 pull 都通过 bitbucket 中的 pull 请求,该请求必须通过 jenkinsfile 中定义的门和审查。一旦这些都通过了,用户就可以 merge 请求。
因为我们有一个设置,我们有许多 git 存储库,每个存储库都可以单独发布,所以用户必须记住在将更改 pull 到 master 时正确地调整语义版本(因为在 master 上运行的每个构建,都会发布输出构建到工件)。
因此,为了确保人们记得更新语义版本,我想检查 gradle.properties 文件与创建分支的点相比是否发生了变化 - 但是由于我们在 jenkins 服务器上使用浅克隆,因此没有关于这。所以正常的“git diff”命令将不起作用。 (我的 git-fu 不是很强大,但我试着用谷歌搜索,到目前为止没有任何效果)。
另一种解决方案可能是 bitbucket 中的一个钩子(Hook),它拒绝对语义版本没有任何更改的 PR。但是我还没有找到这样的插件。
第三种选择是一个 gitook,它只是在创建分支时碰撞它,但我希望用户 100% 知道版本被碰撞,因为有时主要、次要或补丁版本是否已经被碰撞是非常重要的增加。 (如果人们在 jira/bitbucket 中创建分支,也许这不会起作用......)
有任何想法吗?
最佳答案
不敢相信,但我有完全相同的设置:) 对我来说最简单的解决方案是我有发布到 aritifactory(发布阶段)的工作,但在他们这样做之前,他们创建了一个基于gradle.properties 中的版本。现在,如果该标签已经存在,推送它将失败。假设您有标签 v1234
你也是git tag v1234
- 将工作git push --tags
- 将失败
我还通知 bitbucket 构建失败,然后人们可以看到它发生了,因为 git 标签已经存在,这意味着他们没有更新版本
关于git - 如何确保 pull 请求中的文件已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50506143/