GitLab CI 如何通过配置文件实现自动化测试和部署?
GitLab CI/CD 通过。
·
GitLab CI/CD 通过 .gitlab-ci.yml
配置文件实现自动化测试和部署,以下是核心配置逻辑与最佳实践:
基础结构
# 定义流水线阶段(按顺序执行)
stages:
- test
- deploy
# 全局缓存策略(加速构建)
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
# 全局镜像声明(推荐使用 Docker)
image: node:latest
# 定义环境变量(敏感数据存于 GitLab CI/CD Variables)
variables:
PRODUCTION_URL: "https://api.example.com"
1. 自动化测试阶段
unit_test:
stage: test
script:
- npm install
- npm run test:unit # 执行单元测试
artifacts:
paths:
- coverage/ # 保存测试覆盖率报告
expire_in: 1 week
e2e_test:
stage: test
script:
- npm install
- npm run test:e2e # 端到端测试
only:
- main # 仅 main 分支触发
needs: [] # 允许并行执行
2. 自动化部署阶段
deploy_staging:
stage: deploy
script:
- echo "部署到预发布环境"
- npm run build
- scp -r dist/* user@staging-server:/path
environment:
name: staging
url: https://staging.example.com
only:
- main # 仅 main 分支触发
deploy_prod:
stage: deploy
script:
- echo "部署到生产环境"
- ./deploy-prod.sh # 自定义部署脚本
environment:
name: production
url: $PRODUCTION_URL
rules:
- if: $CI_COMMIT_TAG # 仅当打 tag 时触发
when: manual # 手动批准后执行
关键配置说明
配置项 | 作用 |
---|---|
stages |
定义流水线阶段顺序(测试必须在前) |
cache |
缓存依赖目录加速后续构建 |
artifacts |
保留测试报告/构建产物供后续阶段使用 |
environment |
声明部署目标环境(GitLab 会记录部署历史) |
rules/only |
控制任务触发条件(分支/tag/手动触发) |
needs |
允许阶段内任务并行执行 |
扩展能力
- 安全加固:
before_script: - export SECRET_KEY=${DEPLOY_KEY} # 通过 CI/CD Variables 注入密钥
- 多 Runner 支持:
deploy_android: tags: - android-builder # 指定特定 Runner 执行
- 动态配置:
include: - local: '/templates/.deploy-template.yml' # 引用外部配置
验证配置
gitlab-ci-validate .gitlab-ci.yml # 使用官方工具校验语法
完整文档:GitLab CI/CD 配置参考
更多推荐
所有评论(0)