2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

通过合并队列改善 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:005218

评论

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

Go语言入门很简单:如何在 Go 语言中使用 MySQL

宇宙之一粟

Go 语言 MySQL 数据库 5月月更

网站开发进阶(五十)IE浏览器JS调试方法详解

No Silver Bullet

调试 5月月更

整理了100个必备的Python函数,建议收藏

伤心的辣条

Python 程序人生 软件测试 软件自动化测试 测试 单元测试

在线提取Sitemap中的URL工具

入门小站

工具

HTML的iframe使用

恒山其若陋兮

5月月更

适合喜欢快速wiki和md的 vuepress

kcnf

【PIMF】手把手教会在OpenHarmony仓库不使git命令提交PR参与社区贡献

离北况归

OpenHarmony Openharmony啃论文俱乐部 PIMF团队

[Day39]-[二叉树] 二叉搜索树中第K小的元素

方勇(gopher)

LeetCode 二叉树 数据结构算法

C语言_函数封装、变量的作用域

DS小龙哥

5月月更

云网资源如何搭乘「数字孪生」的快车道?

鲸品堂

数字孪生 设备 云网资源

这 BUG,绝了

AlwaysBeta

程序员

CMMI3级(低成熟度)与5级(高成熟度)到底有什么不同?

高山

CMMI CMMI高成熟度

奉劝想把编程学好的学弟们 · 如何高效学习编程?

安然无虞

5月月更

他教全世界程序员怎么写好代码,而且将所有答案写在这本书里!

博文视点Broadview

keep-alive+导航守卫让缓存更精确

空城机

Vue 5月月更

深入了解python字典的有序特性

红毛丹

python 3.5+ 5月月更

浪潮云x乡村振兴:在烟台 十字融合勾勒数字乡村全新蓝图

云计算

八卦信息怎样传到吃瓜群众?这是一条正儿八经的技术科普

融云 RongCloud

高效学习C++基础部分&话题挑战赛

安然无虞

5月月更

YUV色彩空间

Loken

5月月更

PHP基础语法1

乌龟哥哥

5月月更

深入浅出PID算法

劼哥stone

算法 工业互联网 PID

一种基于事件驱动思想的 SAP 系统集成二次开发方法介绍

汪子熙

云计算 SAP 二次开发 5月月更

浅谈前端和后端的区别

工程师日月

5月月更

在线TSV转SQL工具

入门小站

工具

云原生×实战派:向业务聚焦,数字创新时代的最佳选择

阿里巴巴云原生

阿里云 云原生 实战 电子书 案例集

ACK One 构建应用系统的两地三中心容灾方案

阿里巴巴云原生

阿里云 容器 云原生 容灾

kubernetes下的Nginx加Tomcat三部曲之二:细说开发

程序员欣宸

Java Kubernetes 5月月更

linux之history命令

入门小站

Linux

计算机二级备考

工程师日月

5月月更

sealer 成为 CNCF Sandbox 项目,旨在构建分布式应用交付新标准

阿里巴巴云原生

阿里云 开源 容器 云原生

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