当我们推送分支时,我们使用 Google Cloud Build 对 Github 存储库运行不同的测试。我们的问题是,只有分支中的最后一次提交似乎会影响运行哪些触发器。
例如假设我们的存储库如下所示:
./client/<client code>
./server/<server code>
在我们的两个触发器中,我们指定 Included files filter像这样:
- 触发器 1:包含的文件:
client/**
- 触发器 2:包含的文件:
server/**
问题在于,只有分支中应触发构建的最后一次提交才会影响要运行的触发器。
为了说明问题:假设我们推送具有以下提交的分支:
- 提交 1:<对 client/foo.js 的更改>
- 提交 2:<对 server/bar.scala 的更改>
仅运行“触发器 2”。我们想要的是两个触发器都运行,因为我们想要对分支引入的所有更改运行测试。
在决定运行哪些触发器时,有什么方法可以让 GCB “查看”推送的分支中的所有更改吗?明显的快速修复方法是创建具有单个提交的分支,这使得所有触发器都运行,但从我们的 git 工作流程的角度来看并不理想。
最佳答案
将触发器类型设置为“推送到分支”时,git 无法跟踪对所有分支所做的更改,而只能跟踪您所描述的最后一次提交。
要实现此目的,您必须使用拉取请求来触发构建。创建拉取请求时,git 将能够适本地跟踪更改,并且您的测试将按您的预期运行。因此,将触发构建的事件更改为“拉取请求”,然后从您的分支创建拉取请求以触发构建,从而触发您的测试。
关于github - 如何让 Google Cloud Build 触发分支中所有提交的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72599079/