如何利用Github Action实现自动Merge PR

我是蚂蚁背大象(Apache EventMesh PMC&Committer),文章对你有帮助给项目rocketmq-rust star,关注我GitHub:mxsm,文章有不正确的地方请您斧正,创建ISSUE提交PR~谢谢! Emal:mxsm@apache.com

1. 引言

GitHub Actions 是 GitHub 提供的一种强大而灵活的自动化工具,它允许开发者在软件开发生命周期的各个阶段构建、测试和部署代码。借助 GitHub Actions,开发者可以创建自定义的工作流来自动执行一系列任务,从而提高开发效率、减少人为错误并确保代码质量。

2.准备工作

创建一个Github仓库

我这里以我已经创建的 rocketmq-rust为例

设置 GitHub Actions

创建 .github/workflows 文件夹

创建新的工作流文件(如 auto-merge.yml),我这里创建了三个文件:

都是和自动merge相关的。下面会具体讲解

3.编写自动 Merge PR 的 GitHub Actions 工作流

3.1定义工作流名称和触发条件

分析上面每个文件的作用

  • auto-comment-pr.yml

    这个文件的作用是当有贡献者提交PR的时候增加一个评论与此同时添加两个标签,具体如下图所示RP#716

    这个配置文件的触发条件就是 pull_request_target

  • auto_request_review.yml

    这个配置文件的作用就是请求相关项目的ower对PR进行代码Review。来提醒相关人员进行代码Review,例如下面个PR#657

    这个也是为下面自动merge作的准备,配置文件触发条件 pull_request_target

  • automerge.yml

    这个配置文件的作用就对已经Review好的项目进行merge,这里会有一些条件下面会具体讲解

    触发条件:

    • pull_request_target
    • pull_request_review
    • check_suite

3.2 设置工作流的权限

对于上面的这些操作大部分都可以使用Github Action的权限,也就是使用 secrets.GITHUB_TOKEN 这个Token,而我这里的代码Merge和评论使用的是私有的Token也就是 secrets.PAT 。所以你会发现上面的这些评论和操作中部分是 mxsm 这个账号部分是 github-actions 这个机器人账号。

生成Private Access Token(PAT)

这里主要的权限是跟仓库相关的,你可以把全部设置成Read and Write的权限

配置PAT

找到对应项目的设置地方,具体如下图配置PAT

到这里就完成了整个权限的配置。

三个配置文件的具体脚本参照项目:https://github.com/mxsm/rocketmq-rust 项目的对应目录下面 (如果觉得项目不错给个star,谢谢)

4. 测试相关流程

PR#740 为例子。首先当提交PR的时候会有一个对PR的评论与此同时会增加两个标签 auto merge 和 ready to review

同时会增加一个Review的请求这个是有github-actions机器人添加

对应的Action如下:

接下来就是对项目进行代码Review然后, 这里需要有两个地方需要修改

  • 对代码进行approve
  • 删除ready to review label加上approved标签

说明: 这里删除ready to review label加上approved标签是因为在automerge.yml配置里面配置了MERGE_LABELS为"approved,auto merge,!ready to review"。 更多的配置可以参照pascalgn/automerge-action@v0.16.3。

进行操作后:

提示PR已经被合并,在看一下代码界面:

代码已经被合并。实现了自动合并的机制

5. 总结

自动化工作流在现代软件开发中变得越来越重要,特别是在 CI/CD(持续集成和持续部署)过程中。自动化工作流的主要好处包括:

  • 提高开发效率:减少手动操作,让开发者专注于更高价值的任务。
  • 增强代码质量:通过自动化测试和审查流程,确保代码在合并前符合质量标准。
  • 降低人为错误:减少手动合并和部署过程中的潜在错误。
  • 加快发布周期:通过自动化部署和发布流程,加快从代码提交到发布的周期。

相关文档:

GitHub Actions 官方文档

GitHub API 文档

GitHub Actions Marketplace

相关推荐
玖疯子4 小时前
如何详细地遵循RustDesk的步骤来搭建远程访问和自定义服务器?
github
小华同学ai6 小时前
ShowDoc:Star12.3k,福利项目,个人小团队的在线文档“简单、易用、轻量化”还专门针对API文档、技术文档做了优化
前端·程序员·github
loop lee17 小时前
Nginx - 负载均衡及其配置(Balance)
java·开发语言·github
粥里有勺糖1 天前
视野修炼第114期 | 2024JS现状调查结果
前端·javascript·github
o(╥﹏╥)1 天前
github如何给本机绑定 ssh密钥(MACOS)
运维·gitee·ssh·github
ct10270385272 天前
github快速查找已被删除的文件指令日志
运维·github
vvw&2 天前
如何在 Linux 服务器上部署 Pydio Cells 教程
linux·运维·服务器·自动化·debian·github·私有化部署
灰太狼不爱写代码2 天前
git报错:git SSL certificate problem: unable to get local issuer certificate
git·网络协议·github·ssl
油泼辣子多加2 天前
2024年12月20日Github流行趋势
github
IT闫2 天前
【Git从入门到精通】——新版IDea集成Git、Idea集成Github、Gitee以及GItLab应用(看这一篇就够了)
git·gitee·gitlab·github·intellij-idea