Gitlab-ci 仅转换为语法未知的规则

问题描述 投票:0回答:2

我必须将 .gitlab-ci.yml 上的语法从

only
语法更新为
rules
。我做了大部分更改,但我找不到有关以下语法的信息:

deploy-image:
  stage: deploy
  only:
    - stage@helloTeam/Expansion

helloTeam/Expansion
是我们存储库的名称,但我不知道
stage@
的用途。以及如何用规则来转换它。有什么想法吗?

gitlab-ci gitlab-ci.yml
2个回答
1
投票

这记录在仅/除了示例以进行作业控制。

@
符号表示引用存储库路径的开头

及其用法的一个示例:

仅针对父存储库执行作业而不执行分支:

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"

0
投票

好吧,我发现目标是非分叉存储库上的分支

stage

有关

only:refs / except:refs
关键字的更多详细信息可以在此处找到。对于
refs
可能的值/输入,请检查此链接

所以, 与规则等效的是:

  rules:
    - if: '$CI_PROJECT_NAMESPACE == "helloTeam" && $CI_COMMIT_BRANCH == "stage"'

很好奇是否可以定位整个名称,

helloTeam/Expansion
而不仅仅是
helloTeam

© www.soinside.com 2019 - 2024. All rights reserved.