什么是CI/CD?
什么是CI/CD?
CI/CD 是一种现代软件开发实践,它包含两个主要概念:持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery/Deployment)。
持续集成(CI)
持续集成是指开发人员频繁地将代码集成到主干分支的过程。
CI 的主要步骤
1 | # .gitlab-ci.yml CI配置示例 |
CI 的核心功能
自动化构建
1
2
3
4# 常见的构建命令
npm run build
yarn build
pnpm build自动化测试
1
2
3
4
5
6// Jest 测试示例
describe('Calculator', () => {
test('adds 1 + 2 to equal 3', () => {
expect(add(1, 2)).toBe(3);
});
});代码质量检查
1
2
3
4
5
6
7
8// ESLint 配置示例
module.exports = {
extends: ['eslint:recommended'],
rules: {
'no-console': 'warn',
'no-unused-vars': 'error'
}
};
持续交付/部署(CD)
持续交付/部署是将软件自动发布到生产环境的过程。
CD 的部署流程
1 | # 完整的 CI/CD 流水线示例 |
CD 的主要特点
环境管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 环境配置示例
const config = {
development: {
api: 'http://dev-api.example.com',
debug: true
},
staging: {
api: 'http://staging-api.example.com',
debug: false
},
production: {
api: 'https://api.example.com',
debug: false
}
};自动化部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 部署脚本示例
#!/bin/bash
echo "Deploying to $ENV environment..."
# 备份当前版本
cp -r /var/www/app /var/www/app_backup
# 部署新版本
rsync -av dist/ /var/www/app/
# 健康检查
if curl -s "https://$DOMAIN/health" | grep -q "ok"; then
echo "Deploy successful!"
else
echo "Deploy failed! Rolling back..."
cp -r /var/www/app_backup /var/www/app
exit 1
fi
CI/CD 的优势
- 提高开发效率
- 自动化构建和测试
- 快速发现并修复问题
- 减少手动操作错误
保证代码质量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 提交前的代码检查
{
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"pre-push": "npm test"
}
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
}快速迭代
- 频繁、小批量的发布
- 降低发布风险
- 快速获取用户反馈
最佳实践
分支管理策略
1
2
3
4
5
6# Git Flow 工作流
main # 生产环境分支
develop # 开发环境分支
feature/* # 功能分支
release/* # 发布分支
hotfix/* # 热修复分支版本控制
1
2
3
4
5
6{
"version": "1.0.0",
"scripts": {
"release": "standard-version"
}
}监控和告警
1
2
3
4
5
6
7
8
9// 部署后的监控
app.get('/metrics', (req, res) => {
res.json({
status: 'healthy',
uptime: process.uptime(),
memory: process.memoryUsage(),
cpu: process.cpuUsage()
});
});回滚机制
1
2
3
4
5
6
7
8
9
10
11
12
13# 版本回滚脚本
function rollback() {
local version=$1
echo "Rolling back to version $version..."
# 从备份恢复
aws s3 cp s3://backups/app-$version.zip .
unzip app-$version.zip -d /var/www/app
# 更新数据库版本
npm run migrate:rollback
}
通过实施 CI/CD,团队可以:
- 更快地交付价值
- 提高代码质量
- 减少人为错误
- 增强团队协作
- 提升用户满意度
选择合适的 CI/CD 工具和流程,对于提高团队的开发效率和产品质量至关重要。常见的 CI/CD 工具包括:Jenkins、GitLab CI、GitHub Actions、Circle CI 等。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BlogMind!