如何让Jenkins构建因推送到其他GitHub仓库而触发?

1 投票
1 回答
799 浏览
提问于 2025-04-18 10:55

我有一个GitHub仓库(叫做X),里面存放着一个Python代码包,还有一个单独的GitHub仓库(叫做X-tests),里面是这个包的测试代码(这两个仓库分开是因为测试代码的仓库是私有的,可以运行其他私有代码)。我想要实现的是,当有人向X仓库提交代码时,Jenkins可以自动运行X-tests仓库里的测试,然后再进行一些与X仓库相关的操作(比如制作一个pip包)。

我想到的唯一方法是设置三个不同的Jenkins任务:

  1. 第一个任务什么都不做,关联的GitHub仓库是X,构建会在向X提交代码时触发。
  2. 第二个任务运行测试,关联的GitHub仓库是X-tests,构建会在第一个任务完成后触发。
  3. 第三个任务制作pip包等,关联的GitHub仓库是X,构建会在第二个任务完成后触发。

有没有更简单的方法来实现这个呢?

1 个回答

0

我觉得这是一种很常见的方法,用来实现一个简单的 构建-测试-后测试 流程。第一个工作是 名字-提交阶段,第二个工作是 名字-测试阶段或者 名字-集成阶段,第三个工作是你的 pip-wheel。

你可以在 build pipeline jenkins 插件中看到一个更复杂的流程。

要检查一下你的第三个工作是否应该使用第一个工作的产物,而不是使用 X 仓库。这会让你的流程更稳定,因为在一个工作已经开始的时候,其他人可能会往你的 X 仓库里推送东西。Copy Artifact Plugin 对此很有帮助,或者你也可以直接把本地的第一个工作空间作为第三个工作的来源(作为构建步骤中的一个参数)。

你还需要确保对 X-Tests 仓库的更改应该在对 X 仓库的更改之前推送,因为第二个工作可能会使用 X-Tests 仓库中的代码,而这些代码如果和 X 仓库不同步,就可能导致测试失败。

撰写回答