写点什么

麦当劳使用 GitHub Actions 和可重用工作流简化 CI 管道

  • 2024-04-04
    北京
  • 本文字数:1080 字

    阅读完需:约 4 分钟

麦当劳使用 GitHub Actions 和可重用工作流简化 CI 管道

最近,麦当劳分享了如何利用 GitHub Actions 来提升代码可读性和可维护性,并减少代码重复。他们的目标包括简化持续集成流程、提高开发者生产力,以及实现管道的可观察性和监控。


麦当劳高级解决方案架构师 Michael Gorelik 和软件工程师 Achintya Pillai 在麦当劳技术博客上详细阐述了他们的经历。他们谈到了为持续集成阶段建立一致的框架——被称为“黄金路径”,包括代码质量、安全措施、打包和标记。此外,框架还有助于在所有应用程序中维护统一的质量标准,并促进整个组织采用部署工件的标准化命名约定。


麦当劳的工程团队涉足广泛的技术领域,其中有许多使用不同语言编写的微服务,并使用了不同的云原生服务。他们利用 GitHub 的可重用工作流和自定义操作来简化跨应用程序的持续集成 (CI) 流程。


来源:Reduce, reuse, recycle: McDonald’s reusable workflows


为了减少代码重复,他们根据应用程序语言类型来组织 CI 工作流,利用 GitHub Actions 的可重用工作流创建了一个中心 CI 代码库。这些中心工作流包括构建、质量和安全扫描、工件创建和标记等阶段。这种结构简化了维护、更新和代码重用,确保了应用程序开发的标准化。此外,他们使用容器存储所需的工具和库,实现了工作流的简化执行,并降低了安全风险,缩短了执行时间。


麦当劳的工程团队试图将这种黄金路径方法扩展到其应用程序所有的 CI 流程中。为了实现集中式的可重用工作流和操作,每个应用程序都集成了一个简单的 CI 调用文件,让工程师能够在每个 CI 阶段引用黄金路径工作流,并确保符合所需的标准。


今年早些时候,GitHub Actions 引入了一个新的 M1 macOS 运行器 ,并引起了关注。这个新的运行器通过一个配置了 3 个 vCPU、7 GB RAM 和 14 GB 存储空间的虚拟机来运行 Actions 工作流,展示最新的 Mac 硬件对 Actions 的支持。我们偶然看到了一个有趣的 HackerNews 帖子,其中提到了 Alex Ellis 的一个使用 GitHub Actions 的实验。帖子包含了来自技术社区的评论,其中一位 HackerNews 用户 ranting-moth 抱怨说 GitHub Actions 的计算费用非常高,特别是关于 Mac 定价的部分。


麦当劳工程团队还希望通过使用 GitHub Actions 进行持续集成 (CI) 来为工程师提供一种集中控制和个人自治相结合的混合模式。这种方法建立了关键步骤的中心“黄金路径”,同时又让开发人员能够独立添加新的阶段,在保持灵活性的同时不影响其他操作。


在可观察性方面,他们通过采用可重用的工作流构建了集中式的监控解决方案。这些解决方案协助 DevOps 和应用程序团队定期监控其管道性能,并确定未来需要改进的地方。


查看英文原文https://www.infoq.com/news/2024/03/mcdonalds-ci-github-actions/


声明:本文为 InfoQ 翻译,未经许可禁止转载。


2024-04-04 08:007815
用户头像

发布了 501 篇内容, 共 381.5 次阅读, 收获喜欢 576 次。

关注

评论

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

开发框架文档体系化的思考

vivo互联网技术

框架开发

nginx在重定向时端口出错的问题

烫烫烫个喵啊

nginx

Elasticsearch从入门到放弃:再聊搜索

Jackey

elasticsearch

设计模式总篇:从为什么需要原则到实际落地(附知识图谱)

Kerwin

Java 设计模式

前端杂记-&&和||

阡陌r

JavaScript && ||

SpringBoot代码生成器

Kerwin

Java 开源

Docker网络学习第二篇-认识iptables

Lazy

Docker Linux 网络

5万字、97 张图总结操作系统核心知识点

苹果看辽宁体育

操作系统 计算机

没内鬼,来点干货!SQL优化和诊断

Kerwin

MySQL

Hello!GitHub 好用好玩值得收藏的开源项目集合~

Kerwin

开源

疫情年逆风翻盘

Kerwin

程序员

Java8——方法引用

Java旅途

java8 方法引用

关于如何判断一个list是否为空的思考

Leetao

Python Python基础知识 列表

6种快速统计代码执行时间的方法,真香!

王磊

Java

纯CSS实现自定义单选框和复选框

爱嘤嘤嘤斯坦

CSS Java 编程语言 标签

30岁+程序员职场攻略:找到自己的“职业锚”乘风破浪

华为云开发者联盟

程序员 AI 开发者 职场

ARTS - Week 5

Khirye

ARTS 打卡计划

因为 Django ORM update,我今天差点「从删库到跑路」

AlwaysBeta

数据库 django 编程 程序员

没内鬼,来点干货!volatile和synchronized

Kerwin

Java volatile synchronized

当我们在谈架构时,我们谈的是什么?

冯文辉

架构 企业架构 系统架构

【计算机网络】你需要知道的链路层知识

烫烫烫个喵啊

计算机网络 链路层 交换机

week6 总结

不在调上

简述 CAP 原理

不在调上

redis系列之——一致性hash算法

诸葛小猿

redis 一致性hash redis集群

Mybatis执行流程浅析(附深度文章推荐&面试题集锦)

Kerwin

Java mybatis

程序员的时间管理

Kerwin

程序员

6 个珍藏已久 IDEA 小技巧,这一波全部分享给你!

楼下小黑哥

Java IDEA

日记一则

progyoung

一张PDF了解JDK10 GC调优秘籍-附PDF下载

程序那些事

Java jdk JVM GC JDK10

Docker网络学习第一篇:Linux虚拟网络

Lazy

Docker Linux 网络

秒懂云通信:通信圈黑话大盘点

阿里云Edge Plus

云通信 通信云

麦当劳使用 GitHub Actions 和可重用工作流简化 CI 管道_后端_Aditya Kulkarni_InfoQ精选文章