首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gitlab-ci.yml:作业依赖项

gitlab-ci.yml:作业依赖项
EN

Stack Overflow用户
提问于 2022-02-01 15:20:16
回答 1查看 933关注 0票数 1

想象一下有几个阶段:

代码语言:javascript
复制
stages:
    - test
    - build
    - deploy

需要将test阶段划分为较小的任务,如build-test-imagepytestrun-linters等。作业run-testsrun-linters只有在build-test-image工作时才能运行。

我试过了,但没有用:

代码语言:javascript
复制
build-test-image:
  stage: test
  image: ${DOCKER_REGISTRY}/docker:stable
  script:
      - docker build -t ${TEST_CONTAINER_REF} --build-arg ENV=test ./backend
  artifacts:
    when: always
  only:
    - merge_requests

pytest:
  stage: test
  image: ${DOCKER_REGISTRY}/docker:stable
  script:
      - docker run --name ${TEST_CONTAINER_REF} -e SECRET_KEY=${TEST_SECRET_KEY} ${TEST_CONTAINER_REF} runtests; exit $?
  after_script:
      - docker rm ${TEST_CONTAINER_REF}
  only:
    - merge_requests
  needs:
    - build-test-image

错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-01 17:33:39

原则上,如果一个作业声明了一个needs语句,那么为了执行这个作业,它必须对语句中引用的要完成的作业( even if they are in the same stage )进行wait

在您的例子中,run-tests应该等待build-test-image

如果您使用的是自托管版本,请检查Gitlab版本

代码语言:javascript
复制
https://your.domain.com/help

您需要的功能是在14.2中添加的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70943030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档