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 允许阶段内任务并行执行

扩展能力

  1. 安全加固
    before_script:
      - export SECRET_KEY=${DEPLOY_KEY}  # 通过 CI/CD Variables 注入密钥
    
  2. 多 Runner 支持
    deploy_android:
      tags:
        - android-builder  # 指定特定 Runner 执行
    
  3. 动态配置
    include:
      - local: '/templates/.deploy-template.yml'  # 引用外部配置
    

验证配置

gitlab-ci-validate .gitlab-ci.yml  # 使用官方工具校验语法

完整文档:GitLab CI/CD 配置参考

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐