本教程内容整理自 张子彤 - GitHub Actions 与 CI/CD 全流程解析 - 20250917 的演讲视频,属于 PLCT 实验室内部报告,仅供技术交流使用。演讲围绕 GitHub Actions 平台展开,结合 CI/CD 的核心理念,系统讲解了从工作流配置到流水线部署的关键步骤。
如有疏漏或错误之处,欢迎批评指正,共同完善。如需转载或引用本文内容,请注明出处,尊重原作者的劳动成果。
一、GitHub Actions 概述
GitHub Actions 是 GitHub 提供的 CI/CD 平台,能够自动化代码开发流程,包括构建、测试和部署等环节。
核心机制包括:
- 流程自动化:通过编写工作流(Workflow),定义在特定事件触发时执行的步骤。例如:
- 提交 Pull Request 时自动构建和测试
- 合并 PR 后自动部署到生产环境
- 事件驱动:工作流可响应仓库中的多种事件,如新建 Issue 时自动添加标签。
- 运行环境:支持 Linux、Windows 和 macOS 虚拟机,也可使用自托管运行器(Self-hosted Runner)
二、GitHub Actions 核心组件
| 组件名称 | 定义与作用 |
|---|---|
| 工作流(Workflow) | 自动化流程定义,配置于 .github/workflows/ 目录下的 YAML 文件 |
| 事件(Event) | 触发工作流的仓库活动,如 PR 创建、Issue 打开、代码推送等 |
| 作业(Job) | 工作流中的任务集合,支持并行或顺序执行,可设置依赖关系 |
| 步骤(Step) | 作业中的执行单元,可为脚本或复用模块(Action),步骤间可共享数据 |
| 动作(Action) | 可复用的任务模块,用于拉取代码、配置工具链、设置认证等。可自定义或从 Marketplace 获取 |
| 运行器(Runner) | 执行作业的服务器。支持默认虚拟机或自托管运行器,每次运行使用全新环境 |
三、CI/CD 概述
CI/CD 是现代软件开发的核心流程,涵盖持续集成(CI)、持续交付(CD)和持续部署(CD)。
| 概念 | 英文缩写 | 定义 |
|---|---|---|
| 持续集成 | CI | 自动进行代码检查、测试和构建 |
| 持续交付 | CD | 测试通过后可随时发布,但需人工确认 |
| 持续部署 | CD | 测试通过后自动部署到生产环境,无需人工干预 |
四、CI/CD 流水线步骤
一个完整的 CI/CD 流程通常包括以下阶段:
1. 触发阶段(Trigger Phase)
流水线由特定事件触发,例如:
- 代码提交到版本控制系统
- 定时任务(如夜间构建)
- 开发人员手动触发
触发后,系统开始执行预设的自动化流程。
2. 拉取代码(Code Checkout)
从版本库中拉取最新的源代码,确保构建和测试基于最新提交。
3. 构建阶段(Build Phase)
将源码编译为可执行文件,常见任务包括:
- 编译代码(如将 Java 源码编译为字节码)
- 打包为可部署文件(如生成 Docker 镜像)
4. 测试阶段(Testing Phase)
对构建产物进行质量验证,测试类型包括:
- 单元测试:验证单个组件
- 集成测试:验证组件间交互
- 功能测试与安全测试:模拟用户操作,发现潜在问题
测试失败时,流程暂停,需修复后重新执行。
5. 交付 / 部署阶段(Delivery / Deployment Phase)
将应用部署至目标环境,通常包括:
- 预发布环境(Staging):模拟生产环境,进行最终验证
- 生产环境(Production):正式对外服务
常见部署策略:
- 蓝绿部署:新旧环境并行,验证后切换流量,支持快速回滚
- 滚动更新:逐步替换旧版本,降低风险,实现平滑过渡
6. 监控与反馈阶段(Monitoring & Feedback)
部署后持续监控应用运行状态,收集用户反馈,发现并修复生产环境中的问题,形成闭环,推动持续优化。
五、GitHub Actions CI/CD 实践
为提升效率、安全性和可维护性,推荐以下实践:
- 模块化工作流:将不同任务拆分为多个 YAML 文件,如代码检查、构建、部署等。
- 构建加速:使用
actions/cache缓存依赖,减少重复下载时间。 - 优先执行测试与规范检查:将 Lint 和单元测试放在构建前,避免资源浪费。
- 安全管理密钥(Secrets):
- 使用 GitHub Secrets 存储敏感信息
- 避免硬编码,定期轮换,权限最小化
- 环境保护规则:
- 设置部署审批流程
- 限制特定分支或人员使用生产环境 Secret
- 稳定版本部署:
- 仅允许
main或release分支触发部署 - 或通过打版本标签触发,确保可回溯性
- 仅允许
- 复用工作流:
- 抽取公共逻辑为可复用工作流,多个仓库共享,统一维护
- 矩阵策略测试:
- 在不同操作系统和语言版本组合下运行同一作业,确保兼容性
- 通知机制:
- 构建失败及时通知开发者
- 部署成功通知团队,提升协作效率
- 工作流指标监控:
- 使用 GitHub Insights 查看运行时间、排队时间、成功率等
- 找出瓶颈,优化并行策略与缓存策略
如果你正在构建自己的 CI/CD 流程,欢迎参考本文内容进行实践,也欢迎在评论区交流经验~