【问题标题】:Gitlab-ci - ServicesGitlab-ci - 服务
【发布时间】:2021-05-06 00:25:15
【问题描述】:

我的 yml 中有一个服务和一些阶段。 我只需要在特定阶段使用该服务。然而不幸的是,该服务会为每个阶段加载图像,从而延长了执行时间。有没有办法阻止 ci 中的每个阶段执行或使用服务?

谢谢!

【问题讨论】:

    标签: docker service gitlab yaml gitlab-ci


    【解决方案1】:

    如果没有您的 .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
    

    这里,每个作业都有自己的servicesimage配置,所以服务只会用于那个作业,一旦完成,服务就会终止。如果您想针对数据库的多个版本等测试您的代码,这将非常有用。

    【讨论】:

    • 嗨亚当,非常感谢您的回答!我还检查了文档并考虑了这个解决方案(这很棒),我只是在问自己是否还有其他可能的解决方案,例如要设置一个退出变量。但是,正如我所说,它是完美的,非常感谢!
    • 乐于助人!如果此答案或任何其他答案解决了您的问题,您可以投票并将其标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2020-10-08
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多