如何使一项作业仅在另一项作业通过 GitLab 管道后运行

Ern*_*ert 9 gitlab gitlab-ci

根据我刚刚遇到的情况,gitlab-ci.yml 文件中的“needs”行仅检查“needs”行中定义的作业是否正在运行 - 而不是它是否通过或失败。

我在管道中运行了以下代码,即使“test-tag”作业失败,“build-latest”作业也会运行。

我只希望在“测试标签”作业通过时运行“构建最新”作业。

这是如何实现的?

build-latest:
 stage: publish
 image:
 name: gcr.io/go-containerregistry/crane:debug
 entrypoint: [""]
 rules:
 #- if: $CI_COMMIT_TAG != null
    - if: $CI_COMMIT_REF_NAME == "add-latest-tagging"
 when: always
 needs:
    - test-tag
 script:
    - crane auth login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
Run Code Online (Sandbox Code Playgroud)

Art*_*han 1

如果您希望某个作业仅在一个或多个先前作业通过时运行,那么您需要将其放在单独的 stage中。

不确定在没有更多 CI 文件的情况下如何分解作业,但假设:

  1. test-tag工作在stage: test
  2. stage: publish测试后出现

needs:然后,只需从您的工作中删除该选项,它就应该按照您想要的方式工作build-latest