项目部署中CI/CD指什么,简述部署过程
CI/CD(Continuous Integration/Continuous Deployment)是现代软件开发中实现高效交付的核心实践,其核心目标是 自动化 和 持续化 软件构建、测试与部署流程。以下是详细解析:
一、CI/CD 核心概念
阶段 | 作用 | 关键工具示例 |
---|---|---|
CI (持续集成) | 频繁合并代码到主干,自动运行构建和测试 | Jenkins, GitHub Actions, GitLab CI |
CD (持续交付/部署) | 自动化将通过测试的代码发布到测试/生产环境(交付=手动触发,部署=自动) | ArgoCD, Spinnaker, Kubernetes |
二、典型CI/CD流水线流程
graph LR
A[代码提交] --> B[CI: 代码检查]
B --> C[CI: 构建打包]
C --> D[CI: 单元测试]
D --> E[CD: 部署到测试环境]
E --> F[CD: 自动化测试]
F --> G[CD: 生产环境部署]
- 持续集成(CI)阶段
-
代码提交触发 :
yaml# GitHub Actions 示例 on: push: branches: [ main ] pull_request: branches: [ main ]
-
执行步骤 :
- 代码检查:ESLint、SonarQube
- 依赖安装 :
npm install
/pip install -r requirements.txt
- 构建打包 :
npm run build
/docker build -t app .
- 单元测试:Jest、pytest(覆盖率要求≥80%)
- 持续部署(CD)阶段
-
环境分级:
bash# 渐进式部署路径 develop → staging → production
-
部署策略:
策略 实现方式 蓝绿部署 新旧版本并存,流量切换(零停机) 金丝雀发布 先向小部分用户发布新版本 滚动更新 逐步替换旧版本实例(K8s默认策略)
三、技术栈示例
- 前端项目部署流程
yaml
# .github/workflows/deploy.yml
name: Frontend CI/CD
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm install
- run: npm run build
- uses: actions/upload-artifact@v3
with:
name: dist
path: dist/
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: dist
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
- run: aws s3 sync ./dist s3://my-bucket --delete
- 后端微服务部署(K8s)
bash
# GitLab CI 示例
deploy-prod:
stage: deploy
image: bitnami/kubectl
script:
- kubectl apply -f k8s/deployment.yaml --namespace=prod
- kubectl rollout status deployment/app -n prod
only:
- main
四、关键保障措施
-
回滚机制:
bash# Kubernetes回滚命令 kubectl rollout undo deployment/app --to-revision=2
-
监控验证:
- 部署后测试:Postman Newman自动化接口测试
- 健康检查:K8s Liveness/Readiness探针
yaml# k8s 健康检查配置 livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30
-
安全控制:
- 敏感信息:使用Vault或K8s Secrets管理
- 权限隔离:CI账号仅具有最小必要权限
五、现代CI/CD演进趋势
- GitOps:以Git仓库为唯一事实来源(如ArgoCD)
- Serverless CI:云原生流水线(如AWS CodePipeline)
- AI辅助:自动优化测试用例和部署策略
通过CI/CD可实现:
- 效率提升:从代码提交到生产部署从数天缩短至分钟级
- 质量保障:每次提交都经过完整测试流水线
- 风险降低:标准化部署流程减少人为失误
- 快速迭代:支持每日多次生产环境发布