git - 如何确保 pull 请求中的文件已更改

标签 git gradle bitbucket jenkins-pipeline

首先简要介绍一下设置:

因此,在我们的设置中,我们使用 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/

相关文章:

google-cloud-platform - 错误 : build step 0 "gcr.io/cloud-builders/docker" failed: exit status 1

git:如何获取冲突文件的副本?

git - 将 pushurl 添加到 git 子模块

git - 如何在 IntelliJ IDEA 中 rebase ?

android - 在 gradle 构建期间更新 README.md 中的版本号

git - 从 git 克隆特定分支

git - 从命令行添加换行符到 'git commit -m'

java - 来自 Janino 和 Commons-Compiler 的 Spark java.lang.NoSuchMethodError

android - 库正在内部调用v7:27.0.1库

ubuntu - Ubuntu vm 上 nginx 服务器的 Bitbucket 管道