第 11 章 · GitHub Actions 与自动化
本章目标:理解 push 触发 CI;会在仓库添加简单 workflow;在 Actions 页读日志、看绿勾/红叉;知 Secrets 放密钥;区分 工作台推代码 与 云端跑流水线;Gitea 作选修。
学时建议:3~3.5 小时(含 1.5 小时跟练)
前置:git-collab ch10;go-dev 或 gin-web 更佳;了解 ops-deploy 可选。
11.1 场景说明:merge 了 PR,谁帮你跑测试?
你 merge 了 feature/product-filter 到 main。Leader 问:
单元测试跑了吗?构建能过吗?
人工每次手测不现实。CI(持续集成) = 你 push 后,GitHub 自动在干净环境里执行 go test、npm test、构建等。失败 → PR 上 红叉,提醒别合并坏代码。
你在工作台:写 workflow、改代码、commit、push。
GitHub Actions:在云端跑 job,结果在 Actions 页。
11.2 学完你能
| 能力 | 验收 |
|---|---|
| 触发关系 | push/PR → workflow 跑 |
| 添加 workflow | .github/workflows/ci.yml |
| 看结果 | Actions 页绿/红 |
| 读日志 | 找失败步骤与报错行 |
| 安全 | 密钥进 Secrets 不进 yml |
| 规范 | CI 红时不 merge(团队) |
11.3 CI 在你项目里的位置
工作台:改代码 → 审阅 → commit → push
│
▼
GitHub:收到 push → Actions 触发 → checkout → test/build
│
▼
PR 页:Checks 显示 ✓ 或 ✗
没 push 就没有 CI——本地测过仍要推上去看云端结果(环境可能不同)。
11.4 跟练 A:添加最小 Go CI(shop-demo / api-go-demo)
步骤 1 — 建 feature 分支
cd ~/dev-workspace/shop-demo
git checkout main
git pull origin main
git checkout -b feature/ch11-ci
步骤 2 — 创建 workflow 文件
在工作台新建:
.github/workflows/ci.yml
name: CI
on:
push:
branches: [main, 'feature/**']
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Test
run: |
if [ -f go.mod ]; then
go test ./...
else
echo "no go.mod, skip"
fi
说明:
on.push:推 main 或 feature 时跑on.pull_request:开 PR 时也跑- 若无 Go 模块,脚本 skip(练习仓库友好)
步骤 3 — 提交并推送
暂存 → 提交:ci: add GitHub Actions workflow
推送到 GitHub
步骤 4 — 看 Actions
浏览器 → 仓库 Actions 标签 → 点最新 CI run。
你应该看到:
- 黄色进行中 → 绿色 success(或红色 failed,读日志修)
步骤 5 — 开 PR(选修)
按 ch09 开 PR → PR 页 Checks 应显示 CI 结果。