【发布时间】:2021-05-06 00:25:15
【问题描述】:
我的 yml 中有一个服务和一些阶段。 我只需要在特定阶段使用该服务。然而不幸的是,该服务会为每个阶段加载图像,从而延长了执行时间。有没有办法阻止 ci 中的每个阶段执行或使用服务?
谢谢!
【问题讨论】:
标签: docker service gitlab yaml gitlab-ci
我的 yml 中有一个服务和一些阶段。 我只需要在特定阶段使用该服务。然而不幸的是,该服务会为每个阶段加载图像,从而延长了执行时间。有没有办法阻止 ci 中的每个阶段执行或使用服务?
谢谢!
【问题讨论】:
标签: docker service gitlab yaml gitlab-ci
如果没有您的 .gitlab-ci.yml 文件,很难确定,但听起来您在“默认”级别(适用于管道中的每个作业)而不是作业级别(即仅适用于该工作)。查看文档 (https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-image-and-services-from-gitlab-ciyml) 中的示例:
整个管道的服务
default:
image: ruby:2.6
services:
- postgres:11.7
before_script:
- bundle install
test:
script:
- bundle exec rake spec
这里,postgres:11.7 服务将为管道中的每个作业运行,因为它是在“默认”配置中在任何作业之外定义的。如果只设置一个关键字,也可能是这样的:
services:
- postgres:11.7
test:
script:
- bundle exec rake spec
为特定工作提供服务
test:2.6:
image: ruby:2.6
services:
- postgres:11.7
script:
- bundle exec rake spec
test:2.7:
image: ruby:2.7
services:
- postgres:12.2
script:
- bundle exec rake spec
这里,每个作业都有自己的services和image配置,所以服务只会用于那个作业,一旦完成,服务就会终止。如果您想针对数据库的多个版本等测试您的代码,这将非常有用。
【讨论】: