我必须将 .gitlab-ci.yml 上的 Syntax 从
only
syntax 更新为 rules
。我做了大部分更改,但我找不到有关以下合成的信息:
deploy-image:
stage: deploy
only:
- stage@helloTeam/Expansion
helloTeam/Expansion
是我们存储库的名称,但我不知道 stage@
的用途。以及如何用规则进行转换。有什么想法吗?
好吧,我发现目标是非分叉存储库上的分支
stage
。
与规则等效的是:
rules:
- if: '$CI_PROJECT_NAMESPACE == "helloTeam" && $CI_COMMIT_BRANCH == "stage"'
很好奇是否可以定位整个名称,
helloTeam/Expansion
而不仅仅是helloTeam
。
这记录在仅/除了示例以进行作业控制。
符号表示引用存储库路径的开头@
及其用法的一个示例:
仅针对父存储库执行作业而不执行分支:
job:
only:
- branches@gitlab-org/gitlab
except:
- main@gitlab-org/gitlab
- /^release/.*$/@gitlab-org/gitlab
因此,
foo@bar/baz
中的only:
表示foo
是引用(分支名称或特殊关键字),而bar/baz
是存储库路径。
以下
rules:
可以用作与此等效的使用预定义变量CI_COMMIT_REF_NAME
和CI_PROJECT_PATH
:
rules:
- if: $CI_PROJECT_PATH == "bar/baz" && $CI_COMMIT_REF_NAME == "foo"