GitLab CI工作流程标签中的逻辑与

问题描述

仅当提交消息在[]括号内包含某些信息并且触发源为push事件时,我才想创建管道。为此,我写了

workflow:
    rules:
        - if: $CI_COMMIT_MESSAGE =~ /\[[^\[\]]*?\]\n/ && $CI_PIPELINE_SOURCE == 'push'
        - when: never

但是它似乎忽略了源代码部分,因为如果我尝试通过API调用触发管道,则最后一次提交包含[ ]时它将通过。仅当提交消息不满足正则表达式时,才会拒绝API调用,但就我而言,应该始终将其阻止。

有没有办法解决这个问题?

解决方法

when: never指定何时不创建管道。您只需要使用when: always,但是由于这是默认设置,因此无需指定它。另外,在条件语句周围使用引号。试试这个:

workflow:
    rules:
        - if: '$CI_COMMIT_MESSAGE =~ /\[[^\[\]]*?\]\n/ && $CI_PIPELINE_SOURCE == "push"'

有关更多信息,请参见workflow:rules

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...