4

我使用 Cloud Build 作为 CI/CD 解决方案。我的分支策略遵循以下模式:devstage并且prod分支准确地反映了我在每个环境中所拥有的内容。任何其他分支只是开发的常规分支。

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

由于 Cloud Build 不支持在单个 YAML 文件中表达这一点,我有两个:build.yamldeploy.yaml.

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

在此处输入图像描述

第一个工作得很好,deploy.yaml如果有任何东西被推送到,它会触发中描述的步骤dev/stage/prod。但第二个,虽然它接受正则表达式并评估分支的预览(注意你看不到主分支):

在此处输入图像描述

当构建被触发时(是的,它是自动触发的!),它会失败:

在此处输入图像描述

一些谷歌搜索告诉我 Go-lang(据说是在这里评估这个正则表达式的后端)不支持 RegExp 中的 Lookahead。

我怎么解决这个问题?

4

2 回答 2

5

我怎么解决这个问题?

在先尝试负面展望之后,这就是我的做法。

例如排除分支master

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

更多细节在这里

于 2018-11-09T12:34:27.287 回答
2

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

反转正则表达式复选框

这基本上意味着与正则表达式匹配的分支或标签被排除在外,通过^(master)$结合使用,Invert Regex您将能够匹配任何不是 NOT 的分支master

于 2019-07-23T17:31:01.403 回答