在Cloud Build的RegExp中,构建触发器无法识别负向超前

时间:2018-11-07 17:37:18

标签: google-cloud-platform google-cloud-build

我正在使用Cloud Build作为CI / CD解决方案。我的分支策略遵循这种模式:devstageprod分支恰好反映了我在每个环境中的能力。任何其他分支都只是常规的开发分支。

按照这种模式,我需要在除主分支之外的任何分支中进行构建/测试,并且仅在push位于dev / stage / prod中时进行部署。

由于Cloud Build不支持在单个YAML文件中表示,因此我有两个:build.yamldeploy.yaml

然后我创建了两个构建触发器,如下所示:

enter image description here

第一个效果很好,如果将任何内容推送到deploy.yaml,它会触发dev/stage/prod中描述的步骤。但是第二个,尽管它接受RegExp并评估分支的预览(注意您没有看到主要的分支):

enter image description here

触发构建后(是的,它会自动触发!),它将失败:

enter image description here

谷歌搜索告诉我Go-lang(据说是这里正在评估此regexp的后端)不支持RegExp中的Lookahead。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

  

我该如何解决这个问题?

在先尝试否定前瞻后,这是我的操作方式。

例如排除分支master

^(([^m]|m($|[^a]|a($|[^s]|s($|[^t]|t($|[^e]|e($|[^r]))))))|master.+)

答案 1 :(得分:0)

最后,云构建上有一个新功能可以解决此问题,基本上在触发器选项上有一个名为Invert Regex的复选框,如下所示:

invert-regex-checkbox

这基本上意味着排除了与正则表达式匹配的分支或标记,并且通过将^(master)$与此Invert Regex结合使用,您将能够匹配任何非master的分支。