我们设置了管道,每次分支上有推送时我们都会开始一项工作。我们将测试分为自己的存储库。在一个简单的情况下,它看起来像:
Repo0 Job ---> RepoTest Job
对于下游工作,事情会变得有点混乱:
Repo1 ---> RepoTest
---> Repo2 ---> RepoTest
---> Repo4 ---> RepoTest
---> Repo3 ---> RepoTest
是否有一种聪明的方法,不只使用恒定的时间延迟,只在所有下游作业完成后才开始一次测试?比如:
Repo1 ---> Repo2 ---> Repo4 ---> RepoTest
---> Repo3
也可能存在 Repo2 是更改所在的情况,因此只想在 Repo4 完成后开始测试,而不考虑 Repo1 或 Repo3。注意:这都是我们情况的简化示例。我们可能会启动 20 多个工作序列。
目前的设置是,我们只需根据更改所在的存储库触发 X 时间的测试。不理想。
如果您可以忍受上游作业等待下游作业完成,那么您可以在每个作业结束时有条件地触发测试(如果该作业是由 scm 事件触发的),或者如果该作业是由另一个作业触发的,则可以跳过它们。
这意味着您正在向每个 build 作业添加逻辑,但我只是不明白您的 test 作业如何知道在运行之前要等待什么。