以及 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'
我知道只有在满足特定条件时才能 运行 实验室管道,例如。仅当分支为 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'