有没有办法在 .gitlab-ci.yml 文件中自动更改分支名称?

时间:2021-03-29 08:18:40

标签: git continuous-integration gitlab yaml gitlab-ci

我正在尝试构建我的 .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" 这样的东西。

注意:正确完成合并请求后,我的功能分支将被删除。

1 个答案:

答案 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