如何创建评估为AND而不是OR的Gitlab CI规则

时间:2019-11-28 07:25:56

标签: gitlab-ci

如果将变量$ CI_COMMIT_TAG设置为 OR (如果./versions.txt文件已更改),则以下gitlab ci作业将运行。

some-job:
  script:
    - echo "Do some fancy stuff.";
  rules:
    - if: $CI_COMMIT_TAG
      when: always
    - changes:
      - ./versions.txt

但是,我需要的是在$ CI_COMMIT_TAG设置为 AND ../versions.txt更改时运行此作业。如果只有其中一项评估为真,我不希望这项工作继续进行。这是“仅/更改”功能中的行为,但唯一(且除外)功能功能较弱且不建议使用。

我现在想用gitlab ci做些什么吗?

1 个答案:

答案 0 :(得分:1)

来自Docs

在以下示例中:

如果Dockerfile或docker / scripts /中的任何文件已更改 AND $ VAR ==“ string value”,我们将手动运行作业。否则,作业将不包含在管道中。

docker build:
      script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
      rules:
        - if: '$VAR == "string value"'
          changes: # Will include the job and set to when:manual if any of the follow paths match a modified file.
          - Dockerfile
          - docker/scripts/*
          when: manual  

您的代码将如下所示。

some-job:
  script:
    - echo "Do some fancy stuff.";
  rules:
    - if: $CI_COMMIT_TAG
      changes: 
        - versions.txt
      when: manual