写点什么

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

评论

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

原生APP开发的优势和特点

北京木奇移动技术有限公司

原生APP 软件外包公司 APP外包公司

昇腾支持150+企业上线DeepSeek模型及服务,昇腾人工智能伙伴峰会顺利召开

极客天地

GIMP 3.0.0 (Linux, macOS, Windows) 正式版发布 - 免费开源图像编辑器

sysin

GIMP

StarRocks 与主流 BI 工具兼容性盘点(Superset/帆软/QuickBI/Tableau)

镜舟科技

MySQL OLAP BI 分析型数据库 StarRocks

工作中最常用的 8 种设计模式

不在线第一只蜗牛

设计模式

《Operating System Concepts》阅读笔记:p460-p4470

codists

操作系统

【实战解析】淘宝店铺商品全量爬取:item_search_shop API深度指南

Noah

混合APP上线时需要的问题

北京木奇移动技术有限公司

软件外包公司 APP开发公司

TCL电子(01070.HK)2024年经调整归母净利润同比翻倍

财见

鸿蒙NEXT开发案例:程序员计算器

zhongcx

VMware vSphere Replication 9.0.2.2 发布 - 虚拟机复制和数据保护

sysin

vSphere

混沌工程没有银弹

FunTester

PureBasic 6.20 (macOS, Linux, Windows) - 现代的 BASIC 编程语言及 IDE

sysin

PureBasic

51Talk发布2024年Q4财报:第四季度营业收入同比增长117.3%

财见

【Redis深度专题】「踩坑技术提升」一文教会你如何在支持Redis在低版本Jedis情况下兼容Redis的ACL机制

码界西柚

redis 权限控制 acl 底层原理 访问控制列表

物化视图详解:数据库性能优化的利器

镜舟科技

StarRocks 携程 物化视图 湖仓 Data Cache

Leangoo vs ONES:哪个更适合Scrum敏捷开发和SAFe大规模敏捷?

顿顿顿

项目管理 敏捷开发 任务管理 敏捷工具 scrum工具

原生APP和混合APP开发的对比

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

从投机到可持续发展:ETHDenver 2025 的关键启示!

One Block Community

去中心化 polkadot web3

一款体验故障定位的神器

乒乓狂魔

故障定位 AIOPS 可观测

三分钟掌握音频提取 | 在 Rust 中优雅地处理视频音频

Yeauty

rust ffmpeg Video media audio

测试技艺 | 在AI极速发展下重塑

技艺的尾巴

人工智能 AI 软件测试 推动软件业变革 测试技艺

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS HPE (慧与) 定制版

sysin

esxi

原生APP的性能优化

北京木奇移动技术有限公司

软件外包公司 原生APP开发 APP开发公司

Fabric8 Kubernetes 教程——Replication、ConfigMap、Secret

FunTester

征程 6X CAMSYS 性能测试方案介绍

地平线开发者

自动驾驶 算法工具链 地平线征程6

从青铜到王者系列(1):手把手教你用WSL 2在Windows 11家庭版上安装Docker,开发必备教程!

程序员老王

vivo 湖仓架构的性能提升之旅

StarRocks

SQL优化 presto 兼容性测试 StarRocks 物化视图

Netty源码—Reactor线程模型二

不在线第一只蜗牛

Java 数据库 Linux

昇腾AI携手22家伙伴发布大模型应用一体机,让企业AI落地更简单

极客天地

一键部署 GPU Kind 集群,体验 vLLM 极速推理

Se7en

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