以及 GitLab `only` 管道指令的运算符

And operator for GitLab `only` pipeline directive

我知道只有在满足特定条件时才能 运行 实验室管道,例如。仅当分支为 master 或仅当创建 Git 标签时。

例如:

stages:
  - greet

greet_job:
  stage: greet
  only:
    - master
  script:
    - echo "Hello!"

仅当调用分支 master 时,此 运行 才是 greet_job 作业。

我想将两个条件与逻辑与组合起来,即。我想 运行 一个管道,比如说,只有当分支被称为 master 时,才会创建一个新的 Git 标签。这可能吗?

已添加

Here 我找到了一个可能的解决方案:

  - greet

greet_job:
  stage: greet
  only:
    refs:
      - master
      - tags
    variables:
      - $CI_COMMIT_BRANCH == "master"
  script:
    - echo "Hello!"

您可以使用 rules 构建相当复杂的条件,无论如何您都应该使用它,因为 only/except 的工作已经停止。

您可以使用 && 运算符将规则中的两个条件结合起来,例如运行 仅在合并请求上工作,如果 $CUSTOM_VARIABLE 为真。

 rules:
    - if: '$CUSTOM_VARIABLE == "true" && $CI_PIPELINE_SOURCE == "merge_request_event"'

但是检查分支是否为主分支以及是否创建了标签并非易事,因为没有为创建标签的分支预定义变量。

因此,如果您只从 master 创建标签,检查管道是否是标签管道就足够了。

stages:
  - greet

greet_job:
  stage: greet
  script:
    - echo "Hello!"
  rules:
    - if: '$CI_COMMIT_TAG'