规则参数Gitlab CI

时间:2020-03-12 11:41:55

标签: regex gitlab-ci

我正在尝试使用rules:参数,以使作业仅在指定用户进行了推送的情况下才会出现在管道中。我不想为每个工作定义用户列表,所以我有以下全局变量:

variables:
  USER_LIST: "user1 user2 user3"

在工作中,我有以下内容:

rules:
 - if '$USER_LIST =~ /$GITLAB_USER_LOGIN/'
    when: on_success
 - when: never

这似乎不起作用,因为我怀疑正在使用的正则表达式模式未被替换为变量,而是使用$GITLAB_USER_LOGIN作为搜索字符串。如果我使用显式搜索:

rules:
 - if '$USER_LIST =~ /user1/'
    when: on_success
 - when: never

然后模式匹配就很好了。

注意:我知道GITLAB_USER_LOGIN是受保护的变量。我也遇到GITLAB_USER_EMAIL同样的问题。

问题是,如何将GITLAB预定义变量放入将用于模式匹配的字符串中?

2 个答案:

答案 0 :(得分:0)

documentation显示与内容匹配的正则表达式应如下所示:

$VARIABLE =~ /^content.*/

对于您的代码,您需要添加^.*

rules:
 - if '$USER_LIST =~ /^user1.*/'
    when: on_success
 - when: never

答案 1 :(得分:0)

您在规则中使用的是变量而不是正则表达式。因此,您不需要在$GITLAB_USER_LOGIN变量周围使用斜线。尝试这样的事情:

rules:
  - if '$USER_LIST =~ $GITLAB_USER_LOGIN'