持续部署文档的核心要素
写一份能真正落地的持续部署文档,不是堆砌术语,而是让团队成员一看就明白该做什么、怎么做。比如新来的小王,刚接手项目,打开文档就能顺着流程把代码推到生产环境,中间不会卡在“接下来该点哪个按钮”这种问题上。
文档开头直接说明目标:我们的应用每次提交代码后,自动测试、构建镜像、推送到服务器并重启服务。整个过程不需要手动操作,除非触发了特定条件(比如主干分支才允许部署到线上)。
明确流程步骤
用最直白的语言列出每一步发生了什么。比如:
- 开发者推送代码到 GitHub 的 main 分支
- CI 工具(如 GitHub Actions)检测到变更,拉取代码并运行测试
- 测试通过后,生成 Docker 镜像并打上版本标签
- 将镜像上传到私有仓库(如 Harbor)
- 通知 Kubernetes 集群拉取新镜像并滚动更新
这些步骤不需要写成技术论文,就像写菜谱一样,一步步来就行。
配上实际配置示例
光讲流程不够直观,给一段真实的 CI 配置文件更实用。比如 GitHub Actions 的 workflow 文件:
<!-- .github/workflows/deploy.yml -->
name: Deploy
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build and Push Docker Image
run: |
docker build -t myapp:${{ github.sha }} .
echo ${{{ secrets.DOCKER_PASSWORD }} | docker login -u myuser --password-stdin
docker tag myapp:${{ github.sha }} registry.mycompany.com/myapp:${{ github.sha }}
docker push registry.mycompany.com/myapp:${{ github.sha }}
- name: Trigger K8s Rollout
run: |
curl -X POST https://k8s-api.mycompany.com/rollout?image=registry.mycompany.com/myapp:${{ github.sha }}这段配置清楚地告诉团队:我们用什么触发、做了哪些操作、依赖哪些密钥或接口。
注明关键注意事项
文档里得提醒容易出错的地方。比如:
- 只有 main 分支才会触发生产部署,其他分支只跑测试
- Dockerfile 中必须指定基础镜像版本,不能用 latest
- 部署失败时查看哪个日志路径(比如 /var/log/deploy.log)
- 紧急回滚命令是 kubectl set image deployment/myapp myapp=old-image:v1.2
这些细节往往决定部署是否顺利。就像厨房里的“油锅起火别用水”,关键时刻能救命。
保持文档可维护
最好的持续部署文档是活的。每次流程改动后,顺手更新一下文档,比事后补强得多。可以在 README 里加一行:“最后更新于 2024-04-05,由张三修改”。谁改的、什么时候改的,一目了然。
也可以把文档和代码放在一起,比如放在项目根目录的 docs/deployment.md,这样代码和说明同步提交,不容易脱节。