如何让Jenkins构建因推送到其他GitHub仓库而触发?
我有一个GitHub仓库(叫做X),里面存放着一个Python代码包,还有一个单独的GitHub仓库(叫做X-tests),里面是这个包的测试代码(这两个仓库分开是因为测试代码的仓库是私有的,可以运行其他私有代码)。我想要实现的是,当有人向X仓库提交代码时,Jenkins可以自动运行X-tests仓库里的测试,然后再进行一些与X仓库相关的操作(比如制作一个pip包)。
我想到的唯一方法是设置三个不同的Jenkins任务:
- 第一个任务什么都不做,关联的GitHub仓库是X,构建会在向X提交代码时触发。
- 第二个任务运行测试,关联的GitHub仓库是X-tests,构建会在第一个任务完成后触发。
- 第三个任务制作pip包等,关联的GitHub仓库是X,构建会在第二个任务完成后触发。
有没有更简单的方法来实现这个呢?
1 个回答
0
我觉得这是一种很常见的方法,用来实现一个简单的 构建-测试-后测试 流程。第一个工作是 名字-提交阶段,第二个工作是 名字-测试阶段或者 名字-集成阶段,第三个工作是你的 pip-wheel。
你可以在 build pipeline jenkins 插件中看到一个更复杂的流程。
要检查一下你的第三个工作是否应该使用第一个工作的产物,而不是使用 X 仓库。这会让你的流程更稳定,因为在一个工作已经开始的时候,其他人可能会往你的 X 仓库里推送东西。Copy Artifact Plugin 对此很有帮助,或者你也可以直接把本地的第一个工作空间作为第三个工作的来源(作为构建步骤中的一个参数)。
你还需要确保对 X-Tests 仓库的更改应该在对 X 仓库的更改之前推送,因为第二个工作可能会使用 X-Tests 仓库中的代码,而这些代码如果和 X 仓库不同步,就可能导致测试失败。