2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

评论

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

打卡第一次

容光

办公自动化

Elasticsearch 近实时搜索 Near Real-Time Search

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

一名MindSpore新手的爬坑记录~~

依旧廖凯

28天写作 3月日更

原来我还有网络天赋

叫练

网络 交换机

LeetCode题解:91. 解码方法,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

数字化“翻译官”

boshi

数字化 七日更

css高度坍塌与清除浮动

依旧廖凯

28天写作 3月日更

《经济学人》2021年3月13日刊精彩文章导读及资源免费下载

wbliu85

啥?用了并行流还更慢了

L

Java

微服务学习笔记

lenka

3月日更

Lex Fridman: How to learn and master a new skill 简评

teoking

Wireshark数据包分析学习笔记Day9

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

算法攻关 - 重上到下打印二叉树 (O(n))_offer32

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 从上到下打印二叉树

Python 日期格式和时间以及当前时间和时间戳

HoneyMoose

互联网信贷风险与大数据 存量管理

张老蔫

28天写作

基于SparkMLlib智能课堂教学评价系统的设计与实现(一)

大数据技术指南

大数据 spark 智能时代 28天写作 3月日更

[转]html5设计原理

小江

【LeetCode】设计哈希集合Java题解

Albert

算法 LeetCode 28天写作 3月日更

跳表

一个大红包

3月日更

Oracle中我们什么时候需要用到定时任务?

xiezhr

oracle 定时任务 存储过程

Elasticsearch Document 写入原理

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

优雅编程 | Javascript闭包的4种高级用法

devpoint

闭包 防抖 节流 闭包要点

进入大厂的简历应该是什么样子

我是程序员小贱

3月日更

Zookeeper.01 - 简介

insight

zookeeper 3月日更

(28DW-S8-Day21) 《流程型组织》学习笔记:「客户第一」还是「老板第一」

mtfelix

28天写作 流程型组织

什么样的技术能进入一线大厂?这份阿里、百度、腾讯等 20家Java岗招聘要求梳理报告,会给你答案;

Java架构师迁哥

Python DataTime 日期处理

HoneyMoose

「Linux」网络配置大揭秘

我是程序员小贱

3月日更

虚拟路由器冗余协议 VRRP 详解

万事开头难——人为推进效应

Justin

心理学 28天写作 游戏设计

你最喜欢的奥斯卡电影是哪部?

wbliu85

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