我正在使用GCP云存储库(用于镜像),以及用于CI和CD的GCP云构建。当推送一个新分支时,我会遇到麻烦,所有触发器都会被触发。
例如,
Directory:
/a/
/b/
/c/
Triggers set,
Trigger A, included files filter set /a/**
Trigger B, included files filter set /b/**
Trigger C, included files filter set /c/**
$(master) git checkout -b new-branch
$(new-branch) git push
就像上面的例子,如果我从master创建一个新的分支,然后按下它,它会触发所有的触发器。
我知道新的分支包含所有的目录/a/,/b/,/c/但是由于触发器的数量越来越多,很难确定这些变化是否会影响其他服务,而且浪费资源。
这个案子有什么解决办法吗?
1条答案
按热度按时间qlvxas9a1#
根据文档,将一个新分支推送到您的repo将总是触发您的构建并忽略文件过滤器。
如果您将更改推送到新创建的分支,那么Cloud Build会将存储库中的所有文件视为已更改的文件。
我发现这个Issue tracker raised的一个类似的问题仍然是开放的。有一定的变通办法提供了这个问题在问题跟踪。您可以看看这个变通办法:
1.为每个分支使用不同的cloudbuild.yaml文件
1.按照Github Issue中的建议重写入口点并注入bash
1.如果您希望在不同的环境中使用一个cloudbuild.yaml,您可以使用bash模式的解决方案。(注意,在这个更新中,您还可以使用构建触发器中的替代变量来参数化一个cloudbuild.yaml,使其具有分支、标签等不同的环境变量)
1.正如document中所建议的,当通过应用程序与GitHub集成时,您现在可以创建构建触发器来自定义在特定的repo事件上运行哪些构建。例如,您可以设置构建触发器仅在拉取请求时触发(PR)、推入到主标签或释放标签。您可以进一步指定用于每个触发器的不同生成配置,允许您根据所做更改的分支、标记或PR来定制要运行的构建步骤。
也可以看看这个thread1和thread2,这可能会有帮助。