前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitHub Actions : 麦当劳可重复的CI工作流程

GitHub Actions : 麦当劳可重复的CI工作流程

作者头像
DevOps云学堂
发布2024-03-02 15:10:35
960
发布2024-03-02 15:10:35
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

image.png

为了实现快速、可靠的持续集成流程,麦当劳转向可重用的工作流程和 GitHub Actions。作者:Michael Gorelik,高级解决方案架构师和 Achintya Pillai,三级软件工程师

麦当劳的工程团队处于数字创新的前沿,创建无缝且引人入胜的电子商务应用程序,使客户可以使用手机方便地订购他们最喜欢的餐点。 我们的技术领域广阔,涵盖许多微服务,这些微服务是用多种语言编写的,并使用不同的云原生服务。全球各地的工程团队必须每天多次构建、测试、打包和发布这些服务,以集成持续的变更。

我们的目标是为我们所有不同的应用程序创建快速、可靠、一致且灵活的最先进的持续集成 (CI) 流程。 为此,我们结合使用了 GitHub 提供的可重用工作流程和自定义可重用操作。在使用 GitHub Actions 实施可重用工作流程时,我们重点关注了几个关键的改进目标:

  1. 通过减少代码重复和复杂性来最大限度地提高可读性和可维护性。
  2. 为持续集成过程创建黄金路径。
  3. 在不牺牲质量和标准化的情况下增加自主权,最大限度地提高开发人员的生产力。
  4. 实施管道可观察性和监控。

高级流程

提高可靠性和代码可维护性

为了减少管道代码重复,我们根据应用程序的语言类型对应用程序的 CI 工作流程进行分组,并使用 GitHub Actions 上的可重用工作流程来创建中央 CI 代码库。集中式 CI 工作流程包括任何持续集成流程所需的基本阶段,例如构建、质量和安全扫描以及创建和标记工件。这种可重用的结构为我们提供了一个维护、更新和重用代码的通用位置,并有助于确保我们的应用程序遵循一定的标准。我们还使用容器来存储所需的实用程序和库,使我们能够在容器内运行各个阶段。使用容器进行工作流执行有助于避免在管道执行期间下载多个外部库,减少管道执行时间并消除外部库的安全风险。

黄金路径 CI 流程

我们的目标之一是为持续集成阶段创建标准化的黄金路径,例如代码质量、安全性、打包和标记。这有助于我们在所有应用程序中保持相同的质量标准,并帮助我们在整个组织中保持部署工件的标准化命名约定。

我们的目标是向所有应用程序的 CI 流程传播黄金路径。通过我们的中央可重用工作流程和操作,我们可以确保所有应用程序都遵循一组特定的所需步骤。为了实现此设置,我们将一个简单的 CI 调用程序文件注入到每个应用程序中,以便工程师可以参考 CI 阶段的黄金路径可重用工作流程,并确保他们交付的应用程序符合特定的所需标准。该过程的高级说明如下所示:

开发人员生产力

像上述那样的集中式代码库的一个常见问题是频繁请求代码更改,这可能需要很长时间,因为中央团队需要处理许多审批流程和关卡。集中式存储库可能会产生影响,因为它们被许多团队共享。 通过我们的 CI GitHub Actions 代码库,我们的目标是为我们的工程师提供集中控制和个人自治之间的平衡。这种方法将允许组织为某些所需步骤创建和维持中央黄金路径,并为开发人员提供随时添加新阶段的灵活性,而不会影响其他操作并牺牲敏捷性。

让我们深入了解变更过程。当 CI 管道运行时,CI 调用程序文件首先引用我们的黄金路径,该路径执行一些必需的阶段,以在我们的所有应用程序中保持一定水平的质量、安全性和标准。这部分需要组织平台领导进行一定程度的集中控制。下面是我们的工程师在需要更改中央 CI 工作流程中定义的黄金路径时将遵循的拉取请求流程的说明。

不过,如果工程师需要为其特定于应用程序的工作流程添加自定义 CI 阶段,他们可以将自定义操作添加到 CI 调用者 YAML 文件中,而不会影响其他团队并完成拉取请求流程,如下图所示:

可观察性和监控

为了实现跨多个存储库的工作流、工作流队列和工作流日志的企业级可视化,我们使用 CI 可见性工具,可以轻松集成和可视化 GitHub 操作工作流。 借助可重用的工作流程,我们可以解锁中央监控解决方案,帮助 DevOps 团队和应用程序团队经常监控其管道性能并确定未来的改进。我们从管道中捕获以下指标:

  1. 管道数量
  2. 触发管道的存储库提交历史记录
  3. 管道交货时间
  4. 管道成功率和失败率
  5. 监视 GitHub Actions 代码库中使用的分支

总之,可重用工作流程和 GitHub Actions 是强大的工具,可帮助工程师创建强大的流程,为具有各种语言、版本和框架的许多应用程序运行 CI 管道。借助 GitHub Actions 功能和工具,我们实现了一个可重用的基于组件的 CI 系统,解决了可靠性、可维护性、生产力和监控问题。持续集成黄金路径有助于提高用户的敏捷性和创新性,同时提供内置的标准化和质量。

文章原文:

https://medium.com/mcdonalds-technical-blog/reduce-recycle-reuse-03a57554ee6a

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高级流程
  • 提高可靠性和代码可维护性
  • 黄金路径 CI 流程
  • 开发人员生产力
  • 可观察性和监控
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档