Gitlab CI 运行 当提交消息与正则表达式匹配时

Gitlab CI run when commit message matches the regex

我试图仅在提交消息具有条件短语时触发管道。我知道这个问题已经被问了很多次,并且有有用的答案。我还检查了 gitlab ci 文档,它还提供了正确的方法。

无论提交消息中是否包含所需的短语,阶段都会构建。这是 .yml 代码。

before_script:
  - export LC_ALL=en_US.UTF-8
  - export LANG=en_US.UTF-8
  - export BUILD_TIME=$(date '+%Y-%m-%d %H:%M:%S')
  - echo $branch
  
stages:
  - build
  
build_job:
  stage: build
  only:
    variables:
      - $branch
      - $CI_COMMIT_MESSAGE =~ /\[ci build]/
  script:
    - bundle fastlane
    - fastlane build

有人知道它有什么问题吗?

也许你可以删除变量 $branch 并使用 only: refs 这里有一些例子

before_script:
  - export LC_ALL=en_US.UTF-8
  - export LANG=en_US.UTF-8
  - export BUILD_TIME=$(date '+%Y-%m-%d %H:%M:%S')
  
stages:
  - build
  
build_job:
  stage: build

  script:
    - bundle fastlane
    - fastlane build
  only:
    variables:
      - $CI_COMMIT_MESSAGE =~ /\[ci build]/
    refs:
      - /^develop*.*$/

您可以在 refs 中使用正则表达式,在我的示例中意思是:当分支名称包含 develop 并且提交消息包含 [ci build] 时,然后 运行 阶段

你可以修改正则表达式。

这就是我制作中使用的方法。

考虑下一个解决方案:

    before_script:
      - export LC_ALL=en_US.UTF-8
      - export LANG=en_US.UTF-8
      - export BUILD_TIME=$(date '+%Y-%m-%d %H:%M:%S')

    stages:
      - build

    build_job:
      stage: build

    rules: 
      - if: $CI_COMMIT_MESSAGE =~ /\[ci build]/

    script:
      - bundle fastlane
      - fastlane build