如何根据条件停止 gitlab-ci 作业?

How to stop a gitlab-ci job based on a condition?

我想在我的 gitlab_ci 管道中评估当前 java 项目是否在 maven pom.xml 中使用 SNAPSHOT 依赖项进行构建:

像这样:grep -q "SNAPSHOt" pom.xml && echo 1

问题:如何将其集成到 ci 管道中,以便在该条件为真时管道甚至不执行?

gitlab_ci.yml:

image: docker:20
build:
  stage: build
  script:
    - mvn package...

我应该在哪里添加那种条件检查,然后我怎么能让整个作业失败?

  1. 如果您希望管道 运行 仅基于某些条件,您可以使用 rules.
  2. 如果您希望管道 运行 然后在某些情况下失败 不满意你可以检查 script 中的条件然后 使用 exit some_non_zero number.

例如:

test job:
  stage: test
  script:
    - | 
        if [ 1 == 1 ]
        then
          exit 1
        fi

这里我使用的条件是 1==1

before_script:
  - grep -q "SNAPSHOT" pom.xml && exit 1