GitHub Actions:微软如何重写CI/CD规则的游戏

2018年,被微软收购仅五个月后,GitHub宣布推出自己的CI/CD服务。这个决定直接挑战了Travis CI、CircleCI等已有玩家,震惊了整个开发者社区。不到一年时间,GitHub Actions就成为最受欢迎的CI/CD服务之一,重新定义了现代软件开发的工作流。

GitHub Actions:微软如何重写CI/CD规则的游戏

导语

2018年10月,在GitHub Universe大会上,GitHub CEO Nat Friedman站在舞台上,宣布了一个令整个开发者社区震惊的消息:GitHub将推出自己的CI/CD服务——GitHub Actions。这个时机意味深长——GitHub被微软收购仅五个月,外界还在观望微软将如何改造GitHub。Friedman的这个决定直接挑战了Travis CI、CircleCI、Jenkins等已有玩家,许多人质疑:一个代码托管平台真的能做好持续集成吗?但GitHub用行动回应了质疑。他们没有简单复制现有CI/CD工具的功能,而是将Actions深度集成到GitHub的工作流中,创造了一个全新的开发体验。不到一年时间,GitHub Actions就成为最受欢迎的CI/CD服务之一。这是一个关于平台力量、生态整合和开发者体验的故事——它证明了有时候,最好的创新不是发明新东西,而是把已有的东西做得更好、更无缝。


时代背景(Why now)

2018年的CI/CD市场已经相当成熟。

Jenkins是市场的领导者,拥有庞大的用户基础和丰富的插件生态系统。但Jenkins的问题在于配置复杂、界面陈旧、维护成本高。

Travis CI是云CI服务的先驱,在GitHub项目中尤其流行。许多开源项目使用Travis CI进行持续集成。但Travis CI的功能相对有限,定价模式也受到批评。

CircleCI提供了更现代的CI/CD体验,界面友好,性能快速。但CircleCI是独立的平台,与代码仓库的集成有限。

GitLab CI是GitLab内置的CI/CD工具,提供了从代码管理到CI/CD的完整DevOps平台。但GitLab CI仅限于GitLab用户。

与此同时,开发者工作流正在发生变化:

  • 代码仓库作为中心:GitHub成为开发者日常工作的中心
  • 自动化的需求:DevOps文化的普及让CI/CD成为必需
  • 集成的重要性:开发者希望CI/CD与代码仓库深度集成
  • GitHub的统治地位:GitHub成为事实上的标准代码托管平台

市场需要一个与GitHub深度集成的CI/CD服务。

GitHub看到了这个机会。如果GitHub能够提供内置的CI/CD,开发者就不再需要在多个平台之间切换,所有工作流都可以在GitHub内完成。

产品诞生(Origin Story)

GitHub Actions的故事始于GitHub的内部项目。

2017年,GitHub内部开始讨论是否应该进入CI/CD市场。当时GitHub主要专注于代码托管和协作,CI/CD被视为外部工具的领域。

但GitHub的产品团队看到了一个趋势:GitHub正在成为开发者工作流的中心。Pull Request、Issues、Projects——GitHub不仅仅是代码仓库,而是软件开发的协作平台。

“如果GitHub能够提供CI/CD,开发者的工作流将变得更加流畅。”

2018年5月,微软以75亿美元收购GitHub。这个收购在开发者社区引发了巨大关注。许多人担心微软会像过去一样”拥抱、扩展、消灭”开源项目。

但微软的态度出人意料。CEO Satya Nadella明确表示,GitHub将保持独立运营,微软将尊重GitHub的社区和文化。微软还承诺投资GitHub,加速产品开发。

被收购后,GitHub获得了资源和支持,可以加速产品创新。CI/CD成为优先项目之一。

GitHub任命了一个新的工程团队,由GitHub的资深工程师领导。他们的任务很明确:打造一个与GitHub深度集成的CI/CD服务,但不是简单复制现有工具,而是创造新的体验。

团队的核心设计理念是:

  • 工作流即代码:用YAML定义CI/CD流程,与代码一起版本化
  • 事件驱动:不仅仅是CI/CD,而是响应GitHub上任何事件的自动化平台
  • 社区共享:通过Marketplace分享和重用工作流
  • 深度集成:与GitHub Pull Request、Issues、Projects无缝集成

第一个关键突破(First Breakthrough)

2018年10月16日,在GitHub Universe大会上,GitHub Actions正式发布。

GitHub Actions的发布引发了开发者的热烈反响。它的差异化优势立即显现:

1. 工作流即代码

GitHub Actions使用YAML定义工作流,存储在代码仓库的.github/workflows目录中。这让CI/CD配置可以与代码一起版本化、审查和管理。

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Node
        uses: actions/setup-node@v2
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

2. 事件驱动的自动化

GitHub Actions不仅可以响应代码推送,还可以响应GitHub上的任何事件:

  • Issue创建或关闭
  • Pull Request的打开、同步或合并
  • Release的发布
  • 计划的定时任务
  • 甚至外部Webhook

这让GitHub Actions成为一个通用的自动化平台,不仅仅是CI/CD工具。

3. 社区和Marketplace

GitHub推出了Actions Marketplace,开发者可以分享和发现预构建的Actions。从Docker构建到AWS部署,从代码质量检查到Slack通知,Marketplace迅速积累了数千个Actions。

4. 矩阵构建

GitHub Actions支持矩阵构建,可以在多个操作系统、多个版本的运行时上并行运行测试。这让跨平台测试变得简单。

5. 与GitHub的深度集成

Actions的结果直接显示在Pull Request中,失败的测试会阻止合并,成功的部署会自动更新Issue状态。这种无缝集成是其他CI工具无法比拟的。

发布后,GitHub Actions立即获得了大量采用。许多GitHub项目从Travis CI、CircleCI迁移到GitHub Actions。

扩张阶段(Growth)

2019年至2021年是GitHub Actions的快速成长期。

2019年11月,GitHub Actions正式向所有用户开放,包括公共仓库和私有仓库。GitHub为公共仓库提供了免费的Actions运行时间,为私有仓库提供了慷慨的免费额度。

GitHub Actions的快速增长得益于几个关键因素:

1. GitHub的用户基础

GitHub拥有超过4000万用户,是全球最大的代码托管平台。GitHub Actions直接集成在GitHub中,用户无需注册新服务、无需配置集成,开箱即用。

2. 迁移的便利性

GitHub提供了从Travis CI、CircleCI等工具的迁移指南和工具。许多项目可以在几分钟内完成迁移。

3. 免费政策

GitHub为公共仓库提供了无限的免费Actions运行时间,这对开源项目极具吸引力。许多开源项目从付费的CI服务迁移到免费的GitHub Actions。

4. Actions Marketplace的增长

到2020年,Actions Marketplace已经有超过5000个Actions,覆盖几乎所有的开发场景。丰富的生态系统降低了用户配置工作流的难度。

2020年,GitHub Actions推出了多项重要功能:

  • 自托管运行器:允许用户在自己的服务器上运行Actions
  • 环境:支持部署环境的管理和保护
  • 手动触发:支持手动触发工作流
  • 构件缓存:支持依赖和构建产物的缓存,加速构建

2021年,GitHub Actions继续快速迭代:

  • 可重用工作流:支持跨仓库重用工作流定义
  • 组合Actions:支持将多个步骤组合成一个可重用的Action
  • 并发控制:支持限制并发工作流数量
  • 改进的安全性:支持OpenID Connect(OIDC)与云厂商集成,无需存储长期凭证

到2021年底,GitHub Actions已经成为最受欢迎的CI/CD服务之一。根据GitHub的数据,每月运行的工作流超过数百万次

关键竞争(Competition)

GitHub Actions的主要竞争对手是Travis CI、CircleCI、GitLab CI和Jenkins。

Travis CI受到GitHub Actions的冲击最大。许多Travis CI用户迁移到了GitHub Actions,特别是开源项目。2020年,Travis CI宣布停止对开源项目的免费服务,引发了社区的批评,加速了用户流失。

CircleCI是GitHub Actions的主要云竞争对手。CircleCI在性能和企业功能上有优势,但GitHub Actions通过免费政策和深度集成吸引了大量用户。CircleCI通过提供更强大的性能和更专业的支持来竞争。

GitLab CI与GitLab平台深度集成,对于使用GitLab的团队来说是自然选择。GitLab CI的优势在于”单一应用”的理念,提供从代码管理到监控的完整DevOps平台。

Jenkins在企业市场仍有重要地位,特别是对于需要高度定制和自托管的场景。但Jenkins的复杂性和维护成本让许多新项目选择GitHub Actions或CircleCI。

面对竞争,GitHub Actions采取了几个关键策略:

1. 免费策略

GitHub为公共仓库提供无限的免费Actions运行时间,这对开源社区极具吸引力。GitHub还通过GitHub Sponsors资助开源项目,建立 goodwill。

2. 深度集成

GitHub Actions与GitHub代码仓库、Pull Request、Issues的深度集成是其他CI工具无法复制的。这种集成提供了无缝的用户体验。

3. Actions Marketplace

Marketplace的生态系统是GitHub Actions的重要护城河。丰富的预构建Actions降低了用户配置工作流的难度。

4. 企业功能

GitHub Actions通过GitHub Enterprise提供企业级功能:SSO、审计日志、高级安全功能等,满足企业客户的需求。

拐点(Turning Point)

2021年至2023年是GitHub Actions的关键转折点。

2021年,GitHub Actions推出了GitHub-hosted runners的大规模扩展,支持更多的操作系统和配置。同时,Actions的性能和稳定性大幅提升,可以支持大规模的企业工作负载。

2022年,GitHub Actions推出了多项重要功能:

  • Reusable workflows:更强大的可重用工作流功能
  • Required workflows:组织可以强制要求特定的工作流
  • Environments with protection rules:更强大的部署环境保护
  • Improved security with OIDC:无需长期凭证的云部署

2022年,GitHub还推出了GitHub Actions Importer——一个从其他CI工具迁移到GitHub Actions的工具。这进一步加速了用户迁移。

2023年,GitHub Actions继续演进:

  • Arm64 runners:支持ARM架构的运行器,对移动和嵌入式开发很重要
  • Larger runners:支持更大配置的运行器,满足计算密集型任务
  • Repository rules:更强大的分支保护和代码审查规则
  • Actions usage metrics:组织可以看到Actions的使用情况和成本

到2023年,GitHub Actions已经成为事实上的标准CI/CD服务之一。虽然CircleCI、GitLab CI仍有市场份额,但GitHub Actions的快速增长已经改变了行业格局。

结果(Outcome)

到2024年,GitHub Actions已经成为最受欢迎的CI/CD服务之一。

使用量:GitHub Actions每月运行的工作流超过数千万次,支撑着全球数百万个项目的自动化构建和部署。

市场份额:GitHub Actions在GitHub项目中占据主导地位,特别是在开源项目。许多新项目默认选择GitHub Actions作为CI/CD工具。

行业影响

  • CI/CD的普及:GitHub Actions的免费政策降低了CI/CD的门槛,让更多项目采用自动化
  • DevOps文化的推动:Actions的深度集成推动了DevOps文化的普及
  • 工作流即代码:YAML定义工作流成为行业标准,影响了其他CI工具的设计
  • 平台整合的趋势:GitHub Actions的成功证明了平台整合的价值,推动了GitLab等平台加强CI/CD功能

商业模式

GitHub Actions对公共仓库免费,对私有仓库采用按量付费模式:

  • Free:公共仓库无限免费,私有仓库每月2000分钟
  • Team:每月3000分钟起步,$4/用户/月
  • Enterprise:每月50000分钟起步,$21/用户/月

Actions是GitHub的重要收入来源,特别是GitHub Enterprise客户。

生态系统

Actions Marketplace有超过20000个Actions,由GitHub和社区贡献。从构建、测试到部署、监控,几乎所有场景都有相应的Actions。

规律总结(Lessons)

GitHub Actions的故事为我们提供了关于平台战略、开发者体验和竞争策略的宝贵启示:

1. 平台整合可以创造巨大的价值

GitHub Actions的成功在于与GitHub平台的深度整合。当CI/CD与代码仓库无缝集成时,开发者的工作效率大幅提升。这证明了平台整合可以创造比独立工具更大的价值。

2. 免费策略可以快速获取市场份额

GitHub为公共仓库提供免费Actions,这对开源社区极具吸引力。免费策略让GitHub Actions快速获得了大量用户,建立了市场地位。

3. 社区生态系统是强大的护城河

Actions Marketplace的生态系统是GitHub Actions的重要竞争优势。丰富的预构建Actions降低了用户的使用门槛,也创造了迁移成本。

4. 事件驱动的架构提供灵活性

GitHub Actions的事件驱动架构让它不仅仅是CI/CD工具,而是通用的自动化平台。这种灵活性为未来的扩展创造了可能。

5. 深度集成胜过功能堆砌

GitHub Actions的功能可能不如Jenkins丰富,但它与GitHub的深度集成提供了其他工具无法比拟的体验。在开发者工具领域,深度集成往往比功能数量更重要。

6. 时机很重要

GitHub Actions的推出时机恰到好处。GitHub已经成为代码托管的标准,CI/CD已经成为必需,而现有工具(特别是Travis CI)开始出现问题。GitHub抓住了这个窗口期。

“我们不是在构建另一个CI工具,而是在重新思考开发者如何与代码交互。当GitHub被微软收购时,我们获得了资源和支持,可以大胆创新。Actions不是简单的功能添加,而是GitHub作为开发者平台的自然演进。今天,数百万开发者通过Actions自动化他们的工作流,从代码提交到部署,所有流程都在GitHub内完成。真正的创新不是创造新东西,而是把已有的东西做得更好、更无缝。” —— GitHub工程团队