我是蚂蚁背大象(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定义工作流名称和触发条件
分析上面每个文件的作用
这个文件的作用是当有贡献者提交PR的时候增加一个评论与此同时添加两个标签,具体如下图所示RP#716
这个配置文件的触发条件就是
pull_request_target
这个配置文件的作用就是请求相关项目的ower对PR进行代码Review。来提醒相关人员进行代码Review,例如下面个PR#657
这个也是为下面自动merge作的准备,配置文件触发条件
pull_request_target
这个配置文件的作用就对已经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(持续集成和持续部署)过程中。自动化工作流的主要好处包括:
- 提高开发效率:减少手动操作,让开发者专注于更高价值的任务。
- 增强代码质量:通过自动化测试和审查流程,确保代码在合并前符合质量标准。
- 降低人为错误:减少手动合并和部署过程中的潜在错误。
- 加快发布周期:通过自动化部署和发布流程,加快从代码提交到发布的周期。
相关文档: