使用 Mergify 自动合并 Pull Requests.TABLE OF CONTENTS
目录
-
简介
-
合并
-
特点
-
自动合并
-
合并队列
-
安装
-
配置
-
示例
-
结论
简介
将代码合并到分支中可能是一项非常耗时的任务,尤其是在有许多开发人员的大型项目中,或者如果您有大量的 Pull Requests 必须以正确的顺序进行审查、批准和合并。此外,如果在您的 PR 被合并之前,其他 PR 被合并到 main 中,那么您的 PR 就会过时。然后 GitHub 的 CI 测试将进行,如果它们通过了,那么我们将不得不点击合并来合并 PR。这也可以使用 Mergify 自动化。很酷吧!!因此,在本博客中,我们将了解 Mergify 是什么以及我们如何开始使用它并使用它来让我们作为开发人员的生活更轻松。
如果您更喜欢视觉学习,请查看来自 Kunal Kushwaha 的视频:-
视频
合并
Mergify 是一种工具,可帮助您对拉取请求进行优先级排序、排队和自动合并。它还可以在评论、标记、分配和关闭您的拉取请求时重新设置和更新您的分支。简单来说,Mergify 是一个带有合并工具的 GitHub 拉取请求自动化工具。但它可以做的还有很多。最好的部分是您不需要学习任何其他技术,它已集成到 GitHub 中。
特点
自动合并
您可以自定义自动合并行为,一旦 CI 测试等标准/条件通过,您的 PR 将自动合并。这可以通过在 YAML 文件中描述您的拉取请求条件来完成。您可以根据任何条件匹配任何拉取请求。
合并队列
正如我在介绍中解释过时的 PR 一样。您不应该合并过时的 PR,并且保持 PR 最新可能会很耗时。这就是合并队列出现的地方。您的拉取请求被串行合并并由您的 CI 一个接一个地进行测试,从而避免代码回归。
-
当多个拉取请求可合并时,它们被安排为顺序合并,并在彼此之上更新。拉取请求分支更新仅在拉取请求准备好由引擎合并时完成,例如当所有条件都得到验证时。
-
这意味着当第一个拉取请求已被合并,而第二个拉取请求已过时,如您在此图像中看到的,Mergify 将确保拉取请求 2 在合并之前使用基本分支的最新提示进行更新。
安装
- 首先,我们需要登录 Mergify 并允许访问我们的 Github 存储库。这应该会在我们的 Github 帐户中安装 Mergify。

- 单击启用合并,然后根据您的要求选择所有存储库或任何特定存储库。

- 现在,您将看到一个仪表板。在这里,您可以管理您选择的存储库、编写配置文件(编写规则和与之关联的操作)、合并队列等等。

- 现在,为了将您的存储库与 Mergify 连接以应用您定义的所有规则和操作,请在使用 Mergify 的每个存储库中创建一个 Mergify 配置。
配置文件应在存储库的根目录中创建,并命名为 .mergify.yml 或 .mergify/config.yml 或 .github/mergify.yml。顾名思义,配置文件格式基于 YAML,这是一种简单的数据文件格式。

配置
配置文件文档
您可以使用 Mergify 的 Config Editor 中的代码开始。
pull_request_rules:
- name: Automatic merge on approval
conditions:
- "#approved-reviews-by>=1"
actions:
merge:
method: merge
进入全屏模式 退出全屏模式
它包括:-
-
解释规则作用的规则名称。
-
要检查和验证动作发生的条件。
-
验证条件后将执行的操作。
示例
让我们看一个例子。我们将尝试上面写的合并配置,如果一个或多个审阅者批准拉取请求,它会自动合并拉取请求。**

- 在这里,您可以看到已提出的拉取请求。

- 我将批准拉取请求。

- 瞧! Mergify 机器人会自动合并拉取请求。

您还可以根据更改的文件类型自动分配审阅者。示例:如果在 PR 中修改了 python 文件,则将它们分配给人员 A,如果更改了 java 文件,则将其分配给人员 B,依此类推。
pull_request_rules:
- name: assign PRs with Python files modified to Rishwanth
conditions:
- "check-success=ci/circleci: validate"
- files~=\.python$
actions:
assign:
add_users:
- rishwanthram
进入全屏模式 退出全屏模式
这只是 Mergify 可以做的无数令人惊奇的事情中的一个小例子。以下是您可以使用 Mergify 执行的操作列表。

结论
在本博客中,您已经了解了如何开始使用 Mergify。 Mergify 是一个很棒的工具,可以在使用版本控制系统时帮助实现自动化并节省大量时间。我希望你从这个博客中学到了一些东西,并会尝试 Mergify。可以去 Mergify 阅读官方文档了解更多。
PS:我也在 HashNode 上发布了这个博客。如果您喜欢它,请在 HashNode 中投票,这会很有帮助。链接
谢谢阅读!
更多推荐
所有评论(0)