50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

用户故事是垂直的切片(译)

Bruce Talk

敏捷 译文 Agile User Story

python内置数据结构list、set、dict、tuple(一)

若尘

List 数据结构 set 字典 Python编程

如何从零开始学Python:(4)如何处理列表数据?

广之巅

Python 4月日更

⼤规模短⽂本聚类的设计和实践

百度Geek说

聚类 query 内聚

Android Crash监控方式

Darren

监控 异常检测 Android开发 NativeCrash

toB SaaS会成为苏州下⼀个“⼀号产业”么?

龙归科技

数字化 tob

混合云安全简史

龙归科技

混合云

DBA 行业是否将会消亡?

BinTools图尔兹

运维 dba 数据库管理工具

翻译:《实用的Python编程》TheEnd

codists

Python

如何做好前馈管理?

石云升

28天写作 职场经验 管理经验 4月日更

我是如何开始写作的

happlyfox

个人成长 4月日更 1 周年盛典

联盟链技术

360技术

全网最强的权限系统设计攻略:京东北极星商业系统权限管控实践

学Java关注我

Java 编程 程序员 架构 技术宅

《采访阿里“守护神”吴翰清:安全攻防-采访提纲》

Geek_6370d5

禁止算法识别性别,能消解歧视吗?

脑极体

企业架构设计方法TOGAF介绍

joinM

企业架构 技术架构 业务架构 TOGAF 技术与业务

第一课作业纠正

杰语

用户故事拆分招数全景图(译)

Bruce Talk

敏捷 译文 Agile User Story

【采访融云CTO杨攀:2021如何让融云迈向更高舞台】(采访)

码界西柚

融云 杨攀

不忘初心,砥砺前行|暨InfoQ写作平台一周年

程序员架构进阶

28天写作 4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

MySQL 表列数和行大小有哪些限制?

李尚智

MySQL 运维

双非渣硕!四面阿里收到offer后,才发现学长给的面试笔记有多强大

Java 编程 程序员 面试 计算机

灰度发布系统架构设计

xcbeyond

微服务 灰度发布 4月日更

pdf.js使用小结

空城机

大前端 4月日更 pdf.js

Properties类使用需要注意的坑

风翱

properties 4月日更

阿里资深技术专家崮德:如何成就更好的自己

阿里巴巴中间件

今年我读了四个开源项目的源码,来分享下心得

yes

源码

HBase HA 分布式部署

Fong

大数据 运维 HBase hadoop3

Spring Boot 两行代码轻松实现国际化

Java架构师迁哥

Spring Boot 2.0 实现优雅停机

U2647

Spring Boot 4月日更

重读《重构2》- 以对象取代基本类型

顿晓

重构 4月日更

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