关于 CI/CD 的冷思考
CI/CD 听起来像是为了显得专业而搞的一套复杂流程?别天真了。你以为配置了就能解决所有问题?实际上,配置出错的概率有时比手动部署还高。不同的工具坑也不同,比如 Jenkins 的配置文件对新手来说就像天书,GitLab CI 的 YAML 语法也能让人崩溃。
为什么要做自动化
在真实的项目中,我们更看重实际收益:
- 提升效率:自动完成代码测试、构建和部署,减少重复劳动。
- 降低风险:避免手动操作失误,提高部署可靠性。
- 快速反馈:提交后立即触发测试,尽早发现问题。
- 环境一致:确保开发、测试、生产环境的配置差异最小化。
手动部署的痛点
回顾一下典型的手工流程:
# 1. 手动运行测试
npm test
# 2. 手动构建项目
npm run build
# 3. 手动上传构建文件到服务器
scp -r build/* user@server:/var/www/html/
# 4. 手动重启服务
ssh user@server "sudo systemctl restart nginx"
这种方式的隐患很明显:容易忘记步骤、过程不透明、环境配置不一致导致失败,且无法快速回滚。随着项目复杂度上升,维护成本会急剧增加。
主流工具链配置
GitHub Actions
这是目前最流行的选择之一,配置相对简洁。
# .github/workflows/deploy.yml
name: Deploy to Production
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2

