我正在尝试构建我的 .gitlab-ci.yml
文件,以便为我的功能分支完成正确的管道运行。
由于我的功能分支将从开发中克隆,它将获得特定的 .gitlab-ci.yml
,我在下面举了一个例子:
# TCR Compiling Job
TCR:
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"'
when: on_success
changes:
- tcr/**/*
- if: '$CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_BRANCH == "development"'
when: manual
changes:
- tcr/**/*
script:
- latexmk doc-operation-handbook-tcr.tex
artifacts:
name: "$CI_JOB_STAGE-$CI_COMMIT_REF_NAME"
paths:
- doc-operation-handbook.pdf
when: on_success
expire_in: 30 min
在上面的例子中可以看出我有两个不同的规则;一种用于大师,一种用于开发。但是无论何时创建一个功能分支,它都会尝试运行这个没有为该功能分支定义规则的管道..
有没有办法在创建功能分支时自动定义它?就像使用 $CI_COMMIT_BRANCH == "feature_branch"
这样的东西。
注意:正确完成合并请求后,我的功能分支将被删除。
答案 0 :(得分:0)
您可以在 rules
定义中使用正则表达式。例如:
rules:
# only for a ref that starts with "feature_branch_"
- if: '$CI_COMMIT_REF_NAME == /^feature_branch_[a-Z0-9\-\_].*$/'
when: always
# only for a tag ref that matches vX.Y.Z such as v1.5.2
- if: '$CI_COMMIT_REF_NAME == /^v\d\.\d\.\d$/'
when: manual
有关详细信息,请参阅 rules:if
docs。