速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

Flink 读写多套 Kerberos 认证的 Kafka 方案

移动云大数据

关于软件系统的帮助文档页面,你该知道的那些事儿

Baklib

帮助文档

穿越周期性调整 英特尔多举措布局半导体产业

科技之家

华为云智能云接入ICA,让世界距离更近

科技怪授

ica

API 动态更新 Upstream

通明湖

API upstream 动态更新

云原生颠覆实践,可持续性应用创新引擎

通明湖

负载均衡 云原生

SAP | 如何全局处理消息文本

暮春零贰

SAP 10月月更 动态消息

浅谈长连接负载均衡

捉虫大师

负载均衡 长连接 10月月更

网络安全hw蓝队实战之溯源

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

NFT质押挖矿分币系统开发模式定制

开发微hkkf5566

英特尔财报彰显系统级代工渐成气候

科技之家

“程”风破浪的开发者|CTO浅谈数字化转型

CTO技术共享

学习方法 CTO 数字化转型 “程”风破浪的开发者

沉浸其境,共赴云栖数智硬核美学

阿里云CloudImagine

VR/AR 云栖大会 数智融合 超高清视频 云游戏

可观测可回溯 | Continuous Profiling 实践解析

阿里巴巴云原生

阿里云 云原生 可观测

低代码又又又“出圈”了

优秀

低代码

消失与存续——应用交付行业的跌宕演进

通明湖

负载均衡 高可用 云原生 信创

SAP | ABAP程序结构中的处理块

暮春零贰

SAP 模块化 10月月更

颠覆性突破重构企业价值

通明湖

负载均衡 云原生

千企千面,WorkPlus面向政企提供个性化的数智办公平台解决方案

WorkPlus

Sanitizers 系列之 address sanitizer 用法篇

网易云信

算法 语言 & 开发

【网易云信】Sanitizers 系列之 address sanitizer 用法篇

网易智企

算法 开发语言

如何引发一场信创负载均衡领域的大变革?

通明湖

负载均衡 信创

可观测实践|如何使用阿里云 Prometheus 观测 ECS 应用

阿里巴巴云原生

阿里云 云原生

即时通讯IM WorkPlus支持国产化信创环境

WorkPlus

信息技术国产化浪潮中,云科通明湖如何助力企业转型蝶变?

通明湖

双活 高可用架构 自主可控

阿里最新产,SpringCloud微服务核心技术全解手册Github星标50k

程序员小毕

Java 微服务 后端 SpringCloud springcloudAlibaba

ALL in ONE!博睿数据隆重举行ONE 2.0全面上线仪式

博睿数据

可观测性 智能运维 博睿数据 ONE平台

云科通明湖:金融业务可持续性能力建设,少不了这块“拼图”!

通明湖

负载均衡

“程”风破浪的开发者|CTO浅谈数字化转型失败原因

CTO技术共享

学习方法 数字化转型 “程”风破浪的开发者

NFT质押挖矿分红dapp系统开发功能介绍

开发微hkkf5566

软件测试面试真题 | 请介绍一下Python中的深拷贝和浅拷贝

测试人

Python 软件测试 面试题 测试开发

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