我有一个服务和一些阶段在我的yml。我只需要在特定的阶段使用这项服务。然而,不幸的是,服务为每个阶段加载映像,延长了执行时间。是否有一种方法来防止服务被执行或使用的每一个阶段内的词?
谢谢!
发布于 2021-02-01 23:08:09
如果没有.gitlab-ci.yml
文件,很难确定,但听起来您在“默认”级别(适用于正在执行的每个作业)定义了服务,而不是定义了作业级别(仅适用于该作业)。看看docs (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
配置,因此该服务将只用于该作业,一旦它完成,服务将被终止。如果您想要针对多个版本的数据库测试代码,这是非常有用的。
https://stackoverflow.com/questions/65999276
复制相似问题