Build Trigger 无法识别 Cloud Build 上 RegExp 中的 Negative Lookahead
Build Trigger doesn't recognize Negative Lookahead in RegExp on Cloud Build
我正在使用 Cloud Build 作为 CI/CD 解决方案。我的分支策略遵循以下模式:dev
、stage
和 prod
分支准确反映了我在每个环境中拥有的内容。任何其他分支只是开发的常规分支。
通过遵循这种模式,我需要在除主要分支之外的任何分支中 build/test,并且仅在推送位于 dev/stage/prod 时部署。
由于 Cloud Build 不支持在单个 YAML 文件中表达这一点,我有两个:build.yaml
和 deploy.yaml
.
然后我创建了两个构建触发器,如下所示:
第一个工作正常,如果有任何内容被推送到 dev/stage/prod
,它会触发 deploy.yaml
中描述的步骤。但是第二个,虽然它接受 RegExp 并评估分支的预览(注意你看不到主要分支):
当构建被触发时(是的,它是自动触发的!),它失败了:
谷歌搜索告诉我 Go-lang(据推测是此处评估此正则表达式的后端)不支持 RegExp 中的 Lookahead。
我该如何解决这个问题?
How can I solve this problem?
首先尝试负面展望之后,我是这样做的。
例如排除分支 master
^(([^m]|m($|[^a]|a($|[^s]|s($|[^t]|t($|[^e]|e($|[^r]))))))|master.+)
更多详情here。
最后,云构建上有一个新功能可以解决这个问题,基本上在触发器选项上有一个名为 Invert Regex
的复选框,如下所示:
这基本上意味着与正则表达式匹配的分支或标签被排除在外,通过使用 ^(master)$
与此 Invert Regex
相结合,您将能够匹配任何不是 master
的分支。
我正在使用 Cloud Build 作为 CI/CD 解决方案。我的分支策略遵循以下模式:dev
、stage
和 prod
分支准确反映了我在每个环境中拥有的内容。任何其他分支只是开发的常规分支。
通过遵循这种模式,我需要在除主要分支之外的任何分支中 build/test,并且仅在推送位于 dev/stage/prod 时部署。
由于 Cloud Build 不支持在单个 YAML 文件中表达这一点,我有两个:build.yaml
和 deploy.yaml
.
然后我创建了两个构建触发器,如下所示:
第一个工作正常,如果有任何内容被推送到 dev/stage/prod
,它会触发 deploy.yaml
中描述的步骤。但是第二个,虽然它接受 RegExp 并评估分支的预览(注意你看不到主要分支):
当构建被触发时(是的,它是自动触发的!),它失败了:
谷歌搜索告诉我 Go-lang(据推测是此处评估此正则表达式的后端)不支持 RegExp 中的 Lookahead。
我该如何解决这个问题?
How can I solve this problem?
首先尝试负面展望之后,我是这样做的。
例如排除分支 master
^(([^m]|m($|[^a]|a($|[^s]|s($|[^t]|t($|[^e]|e($|[^r]))))))|master.+)
更多详情here。
最后,云构建上有一个新功能可以解决这个问题,基本上在触发器选项上有一个名为 Invert Regex
的复选框,如下所示:
这基本上意味着与正则表达式匹配的分支或标签被排除在外,通过使用 ^(master)$
与此 Invert Regex
相结合,您将能够匹配任何不是 master
的分支。