You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CI的IF条件语句中使用regex正则表达式

问题原因&修正方案

你的脚本存在3处明显的语法错误,导致正则匹配逻辑无法正常生效:

  • Bash条件语法中,[[ 后必须加空格,你写的[[${CI_COMMIT_BRANCH}没有空格,会被识别为无效命令
  • 正则表达式和结尾的]]之间必须加空格,你写的feature\/.*]]缺少空格,会导致语法解析失败
  • 正则没有加开头锚点^,存在误匹配非开头带feature/的分支的风险,且你当前的正则只覆盖了feature/开头的分支,没有包含develop/的匹配逻辑

修正后的代码

仅匹配feature/开头分支版本

before_script:
  - >
    if [[ ${CI_COMMIT_BRANCH} =~ ^feature\/.* ]]; then
      echo "Feature Branch Found !"
    else
      echo "Production Branch Found !"  
    fi

同时匹配feature/、develop/开头分支版本(可直接设置变量)

before_script:
  - >
    if [[ ${CI_COMMIT_BRANCH} =~ ^(feature|develop)\/.* ]]; then
      # 这里替换为你需要设置的变量即可
      export DEPLOY_ENV="test"
      echo "Feature/Develop Branch matched, deploy env set to test"
    else
      export DEPLOY_ENV="prod"
      echo "Production Branch matched, deploy env set to prod"
    fi

额外注意事项

GitLab CI默认使用Bash解析脚本,正则部分不需要加引号,加引号会被识别为普通字符串匹配而非正则匹配,导致逻辑失效。

内容的提问来源于stack exchange,提问作者Husker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:45:03