写点什么

通过合并队列改善 GitHub 的部署

  • 2024-04-26
    北京
  • 本文字数:1029 字

    阅读完需:约 3 分钟

通过合并队列改善 GitHub 的部署

最近,Github 谈到了如何使用合并队列(merge queue)来实现代码更新。GitHub.com 的合并队列已经开发并扩展到了管理超过 30000 个拉取请求(pull request),以及相应的 450 万次 CI 执行。


合并队列系统将拉取请求组织成可部署的批次,通过 GitHub Actions 启动构建和测试,并通过遵循分支保护规定以防止更新中包含失败的提交,从而维护主分支的完整性。队列中相互冲突的拉取请求会被自动识别和排除,系统会根据需要重新分组。


GitHub 的员工产品主管 Will Smythe 和员工工程师 Lawrence Gripper 在一篇博客文章中详细阐述了 GitHub 使用合并队列的过程。除了提高开发人员的效率之外,采用合并队列的目的还在于提升开发人员在交付工作时的整体体验,防止有问题的拉取请求影响到规模更广的团队,并确保所有服务和仓库的流程一致并且高度自动化。


2021 年年中,GitHub 开始在几个较小的内部仓库中试用合并队列的功能。他们分阶段实现流程的变更,这涉及到大多数开发人员在每天清晨开始一天的主要工作之前的测试和修改恢复。随着时间的推移,到 2023 年,GitHub 系统性地将其大型 monorepo 和所有与生产服务相关联的仓库均迁移到了合并队列系统。


合并队列融入了 GitHub 现有的拉取请求工作流程,开发人员无需学习特定的 ChatOps 命令,也无需使用标签或特定注释语法进行状态管理,这增强了 GitHub 的开发人员体验。开发人员可以轻松地将他们的拉取请求排入队列,如果他们发现自己的更改有任何问题,只需单击一下即可退出队列。


在 GitHub 于 2023 年第三季度左右全面发布合并队列后,我们在 Hacker News 上看到了相关讨论。技术社区积极参与了讨论,一位用户重点介绍了他们几个月来 在 monorepo 拉取请求合并中使用该系统的情况,并对流程的实质性改进提出了肯定。他们还称赞了该系统的快速能力和基于 trunk 的可靠发布,并对该功能背后的团队表示了赞赏。


另一位用户询问合并队列是否会很快出现在 Azure DevOps 中,表示对其可用性很感兴趣。一位参与者在回复中指出 Azure Repos 缺乏更新,并指出其 SSH Git 继续依赖ssh-rsa主机密钥,而实际上 OpenSSH 已废弃该协议数年之久了。


每月,会有 500 多名工程师利用合并队列将 2500 个拉取请求集成到 GitHub 的大型 monorepo 中,这将部署变更的平均时间缩短了 33%。在 GitHub 定期进行的开发人员满意度调查中,一位工程师称赞合并队列是“在 GitHub 的变更部署方面,这是我最满意的生活质量提升之一!”


原文链接


https://www.infoq.com/news/2024/03/github-merge-queues/

2024-04-26 08:005341

评论

发布
暂无评论
发现更多内容

长安链源码分析之网络模块 net-liquid(5)

云安全和传统安全有什么区别?又有什么关系?

行云管家

网络安全 数据安全 云安全

python入门之os模块和platform模块

技能实验室

10月月更

【融云出海白皮书免费看】出海洞察之印尼的「新兴市场启示录」

融云 RongCloud

白皮书 出海

国家级认证!青藤获得安全运营类一级资质

青藤云安全

网络安全 主机安全 青藤云安全

LP流动性质押挖矿dapp系统开发详情(案例演示)

开发微hkkf5566

python入门之发送邮件

技能实验室

Python 10月月更

python入门之时间处理日期库

技能实验室

Python 10月月更

电网攻击频发,云原生架构正在成为众矢之的

青藤云安全

网络安全 主机安全 青藤云安全

等保合规是什么意思?怎么做?

行云管家

网络安全 等保 过等保 等保合规

python入门之数据库操作

技能实验室

Python 10月月更

深入RocketMQ-消息原理篇

C++后台开发

RocketMQ 消息队列 后端开发 linux开发 C++开发

专访超次元|这家头部虚拟赛道公司,如何借助3DCAT加速元宇宙建设?

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

Vue响应式系统原理并实现一个双向绑定

yyds2026

Vue

python将视频抽帧的的多种方式

技能实验室

10月月更

使用Idea搭建App开发环境,创建安卓工程

技能实验室

android IDEA 10月月更

使用python生成文字图片,画圆圈 ,生成圆形图片

技能实验室

10月月更

记一次应用接入第三方统一认证服务的过程,基于JWT和OAuth2.0

技能实验室

Java 10月月更

两折!3DCAT实时渲染云超强算力帮你玩转元宇宙

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

windows机器配置自签名ssl证书,部署文件服务器

技能实验室

windows SSL证书 10月月更

使用python监控linux服务器

技能实验室

10月月更

3DCAT教育合作伙伴招募 | 价值80w权益等你来,立享最高级别技术支持

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

Springboot项目启动后获取配置属性

技能实验室

10月月更

LED显示屏由什么组成?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

使用python提供一个简单的restful接口

技能实验室

python 3.5+ 10月月更

python入门之内置模块argparse

技能实验室

Python 10月月更

使用python实现一个文件搜索功能,类似于Everything功能

技能实验室

Python 10月月更

Java读取csv文件的三种方式

技能实验室

10月月更

通过合并队列改善 GitHub 的部署_后端_Aditya Kulkarni_InfoQ精选文章