首页/开发/CI/CD 与发布速查/GitLab CI 的 services(旁路服务)
工具链要点63 条

GitLab CI 的 services(旁路服务)

为作业启动伴随容器(数据库、缓存、模拟服务),测试作业可以连接真实的 MySQL/PostgreSQL 实例,而不是全部依赖桩件。

CI/CD 与发布速查开发更新于 2026-10-12
写法services: [postgres:16]
访问通过服务别名/主机名访问(如 postgres)
健康检查部分镜像支持就绪探测,必要时脚本重试
替代testcontainers 等作业内方案

连数据库跑测试

连数据库跑测试
test:
  image: postgres:16
  services:
    - name: postgres:16
      alias: db
  variables:
    POSTGRES_PASSWORD: test
  script:
    - psql -h db -U postgres -c 'select 1'
服务与作业容器在同一个网络命名空间:用别名互访,不要写 localhost。

易错点

  • 用 localhost 访问服务:在 Docker executor 下解析不到,必须用别名
  • 服务未就绪就开始测试:需要重试或就绪等待逻辑,避免偶发失败

数据来源与参考

  • GitLab Docs《Services》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌