如何利用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为例

image-20240707155536592

设置 GitHub Actions

创建 .github/workflows 文件夹

image-20240707155722047

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

  • auto-comment-pr.yml
  • auto_request_review.yml
  • automerge.yml

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

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

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

分析上面每个文件的作用

  • auto-comment-pr.yml

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

    image-20240707160323320

    image-20240707161057321

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

  • auto_request_review.yml

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

    image-20240707160958341

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

  • automerge.yml

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

    image-20240707161332639

    触发条件:

    • pull_request_target
    • pull_request_review
    • check_suite

3.2 设置工作流的权限

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

image-20240707162052061

生成Private Access Token(PAT)

image-20240707162650549

image-20240707162750740

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

配置PAT

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

image-20240707163047204

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

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

4. 测试相关流程

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

image-20240707163732452

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

image-20240707163834587

对应的Action如下:

image-20240707163937063

接下来就是对项目进行代码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。

image-20240707164051565

进行操作后:

image-20240707164519504

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

image-20240707164601273

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

5. 总结

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

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

相关文档:

GitHub Actions 官方文档

GitHub API 文档

GitHub Actions Marketplace

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780915.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖 ...待更新

苍穹外卖 1、 阿里云OSS2、菜品分类查询 1、 阿里云OSS 工具类 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

【QT】显示类控件

显示类控件 显示类控件1. label - 标签2. LCD Number - 显示数字的控件3. ProgressBar - 进度条4. Calendar Widget - 日历5. Line Edit - 输入框6. Text Edit - 多行输入框7. Combo Box - 下拉框8. Spin Box - 微调框9. Date Edit & Time Edit - 日期微调框10. Dial - 旋钮…

自注意力机制和多头注意力机制区别

Ref:小白看得懂的 Transformer (图解) Ref:一文彻底搞懂 Transformer(图解手撕) 多头注意力机制(Multi-Head Attention)和自注意力机制(Self-Attention)是现代深度学习模型&#x…

浅尝Apache Mesos

文章目录 1. Mesos是什么2. 共享集群3. Apache Mesos3.1 Mesos主节点3.2 Mesos代理3.3 Mesos框架 4. 资源管理4.1 资源提供4.2 资源角色4.3 资源预留4.4 资源权重与配额 5. 实现框架5.1 框架主类5.3 实现执行器 6. 小结参考 1. Mesos是什么 Mesos是什么,Mesos是一个…

8、Redis 的线程模型、I/O 模型和多线程

Redis 的线程模型、I/O 模型和多线程 1. Redis 的线程模型 Redis 以其高效的单线程模型著称,从设计之初,Redis 就选择了单线程模式,这在很大程度上简化了其内部实现和维护。单线程模式避免了多线程编程中常见的竞争条件和锁机制问题&#x…

【WebRTC实现点对点视频通话】

介绍 WebRTC (Web Real-Time Communications) 是一个实时通讯技术,也是实时音视频技术的标准和框架。简单来说WebRTC是一个集大成的实时音视频技术集,包含了各种客户端api、音视频编/解码lib、流媒体传输协议、回声消除、安全传输等。对于开发者来说可以…

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…

汉诺塔与青蛙跳台阶

1.汉诺塔 根据汉诺塔 - 维基百科 介绍 1.1 背景 最早发明这个问题的人是法国数学家爱德华卢卡斯。 传说越南河内某间寺院有三根银棒,上串 64 个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕&am…

Java项目:基于SSM框架实现的共享客栈管理系统分前后台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的共享客栈管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

网页生成二维码、在线演示

https://andi.cn/page/621504.html

go语言day11 错误 defer(),panic(),recover()

错误: 创建错误 1)fmt包下提供的方法 fmt.Errorf(" 格式化字符串信息 " , 空接口类型对象 ) 2)errors包下提供的方法 errors.New(" 字符串信息 ") 创建自定义错误 需要实现error接口,而error接口…

【JAVA多线程】线程池概论

目录 1.概述 2.ThreadPoolExector 2.1.参数 2.2.新任务提交流程 2.3.拒绝策略 2.4.代码示例 1.概述 线程池的核心: 线程池的实现原理是个标准的生产消费者模型,调用方不停向线程池中写数据,线程池中的线程组不停从队列中取任务。 实现…

“未来已来·智能共融”高峰论坛在京成功举办

在人工智能技术的澎湃浪潮中,其与传统产业的深度融合正逐步成为驱动区域经济增长的新引擎。2024年7月4号,一场以“未来已来智能共融——探索人类智能与人工智能共生共进的新路径”为主题的高峰论坛在北京电子科技职业学院图书馆圆满落幕,为北京经济技术开发区(简称“北京经开区…

时间处理的未来:Java 8全新日期与时间API完全解析

文章目录 一、改进背景二、本地日期时间三、时区日期时间四、格式化 一、改进背景 Java 8针对时间处理进行了全面的改进,重新设计了所有日期时间、日历及时区相关的 API。并把它们都统一放置在 java.time 包和子包下。 Java5的不足之处: 非线程安全&…

JAVA 课设 满汉楼餐厅点餐系统

一、代码详解 1.总体结构展示 2.总体代码 2.1 libs文件 链接:https://pan.baidu.com/s/1nH-I7gIlsqyMpXDDCFRuOA 提取码:3404 2.2 配置的德鲁连接池 #keyvalue driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/mhl?rewriteBa…

SAP_MM模块-特殊业务场景下的系统实现方案

一、业务背景 目前公司有一种电商业务,卖的是备品配件,是公司先跟供应商采购,然后再销售给客户,系统账就是按照正常业务来流转,公司进行采购订单入库,然后销售订单出库。 不过这种备品配件,实…

Android使用http加载自建服务器静态网页

最终效果如下图,成功加载了电脑端的静态网页内容,这是一个xml文件。 电脑端搭建http服务器 使用“Apache Http Server”,下载地址是:https://httpd.apache.org/download.cgi。具体操作步骤,参考:Apache …

卫星IoT产品发展前景

卫星IoT产品发展前景 一、概述 卫星IoT产品是指利用卫星通信技术实现物联网设备互联互通的解决方案。随着卫星互联网技术的快速发展,卫星IoT产品正逐渐成为解决偏远地区、海洋、航空等场景下物联网连接问题的重要手段。 二、性能特点 广泛覆盖: 卫星…

ssrf结合redis未授权getshell

目录 漏洞介绍 SSRF Redis未授权 利用原理 环境搭建 利用过程 rockylinux cron计划任务反弹shell 写公钥免密登录 ubuntu 写公钥免密登录 漏洞介绍 SSRF SSRF(server side request forgrey)服务端请求伪造,因后端未过滤用户输入&…

SpringBoot实现多数据源切换

1. 概述 仓库地址:https://gitee.com/aopmin/multi-datasource-demo 随着项目规模的扩大和业务需求的复杂化,单一数据源已经不能满足实际开发中的需求。在许多情况下,我们需要同时操作多个数据库,或者需要将不同类型的数据存储在不…