CI/CD 是"代码提交 → 自动构建 → 自动测试 → 自动部署"的自动化流水线,让发布从"手动半天"变成"一键几分钟"。这篇快速入门:概念、流水线阶段、一个 GitHub Actions 例子。
一、解决什么问题:发布不靠"人肉"
没有 CI/CD:每次发版手动打包、手动测、手动传服务器、手动重启——又慢又容易错(漏打包、忘重启、环境不一致)。
有 CI/CD:代码一提交,流水线自动跑——构建、测试、部署全自动,发布可重复、可回滚。
二、流水线的核心阶段
代码提交 → ① 构建(编译打包) → ② 测试(单测/E2E) → ③ 部署(发到环境) → ④ 通知| 阶段 | 干什么 | 对应文章 |
|---|---|---|
| 构建 | 编译、打镜像/包 | — |
| 测试 | 跑单测/E2E,不过就停 | 《JUnit 5 快速入门》《Playwright 快速入门》 |
| 部署 | 推镜像、滚动发布 | — |
| 通知 | 成功/失败发消息 | — |
关键:测试阶段挂了就阻止部署——CI/CD 不只是自动化,更是"质量门禁"。
三、GitHub Actions 例子
.github/workflows/deploy.yml:
yaml
name: CI/CD
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 构建
run: |
npm ci
npm run build
- name: 测试(不过就部署不了)
run: npm test
- name: 部署
run: |
scp -r dist/ user@server:/var/www/
ssh user@server "systemctl reload nginx"流程:推代码到 main → 自动构建 → 自动测试 → 测试过了自动部署。哪步失败,后续自动停。
四、核心概念
| 概念 | 是什么 |
|---|---|
| CI(持续集成) | 频繁把代码合并到主干,每次合并都自动构建+测试 |
| CD(持续交付/部署) | CI 通过后自动发布到环境 |
| 流水线(Pipeline) | 构建→测试→部署的自动化流程定义 |
| 质量门禁 | 测试不通过就不让进下一步 |
小结
- CI/CD = 构建/测试/部署自动化流水线,发布从"人肉"变"一键"
- 核心阶段:构建 → 测试(质量门禁)→ 部署 → 通知
- GitHub Actions 是免费的 CI/CD 平台(.github/workflows 下定义 yml)
- 测试是门禁:不过就停,防止坏代码上线
想了解上线后的监控(流水线部署完怎么盯着),看「监控告警快速入门」(文章整理中)。
