Skip to content
返回部署

GitLab CI/CD

GitLab 原生 CI/CD,.gitlab-ci.yml、runner 和环境。

CI/CD进阶

为什么

GitLab CI 内置 GitLab,.gitlab-ci.yml、auto-devops 和容器仓库。Runner 可共享或自托管,含自动扩缩。

何时使用

GitLab 上项目用 GitLab CI。非 GitLab 避免(无 GitHub Actions 优势)。

如何做

1. 配置 — 仓库根 .gitlab-ci.yml 2. 阶段 — build、test、deploy 3. Runner — 共享或自托管,标签 4. 变量 — CI/CD 设置或 .gitlab-ci.yml 5. 缓存 — cache key 依赖 6. 产物 — 作业间传递 7. 环境 — 部署 staging/prod

示例

# .gitlab-ci.yml stages: [build, test, deploy] build: stage: build image: node:20 script: [npm ci, npm run build] artifacts: { paths: [dist] } test: stage: test image: node:20 script: [npm ci, npm test] cache: { key: npm, paths: [node_modules] } deploy:prod: stage: deploy image: node:20 script: [npx vercel --prod --token $VERCEL_TOKEN] environment: { name: production, url: https://app.com } only: { refs: [main] } variables: { VERCEL_TOKEN: $VERCEL_TOKEN }

常见问题

  • ⚠无 runner — 无共享 runner 或自托管未注册,查设置
  • ⚠作业未运行 — only/except 规则,查分支和条件
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓依赖用 cache — 加速作业,lockfile 哈希做 cache key
  • ✓部署用环境 — 跟踪部署,UI 回滚
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答