如何通过推送到不同的存储库来触发GitHub存储库的Jenkins构建?

时间:2014-06-24 16:16:09

标签: python github jenkins

我有一个GitHub存储库(称之为X)用于Python代码包,以及一个单独的GitHub存储库(称之为X-tests),其中包含该包的测试(它们是单独的存储库,因为包含测试的存储库是私有的,因此它可以运行其他私有代码)。我想这样做,当有人推送到X存储库时,Jenkins将从X-tests存储库运行测试,然后做一些与X存储库相关的其他事情(例如制作一个点轮)。

我能想到的唯一方法就是有三个独立的Jenkins工作:

  1. 一个什么都不做的工作,其GitHub存储库是X,通过推送到X来触发构建
  2. 运行测试的作业,其GitHub存储库为X-test,其中构建由作业1完成触发
  3. 制作pip wheel等的作业,其GitHub存储库为X,其中构建由作业2完成触发
  4. 有没有更简单的方法呢?

1 个答案:

答案 0 :(得分:0)

我认为这是实现简单的 build-test-posttest 管道的一种非常标准的方法。作业1是名称 -commit-stage,作业2是名称 -test-stage或name-integration-stage和第三个作业为您的pip-wheel。

您可以在build pipeline jenkins插件中看到更复杂的管道。

检查您的第三个作业是否应该使用作业1的工件而不是存储库X.这将为您的管道带来原子性,因为有人可以在作业已经开始时将某些东西推送到您的存储库X. Copy Artifact Plugin对此非常有用,或者您可以将本地作业1工作空间作为作业源3引用(作为构建步骤中的参数)。

您还需要确保在更改存储库X之前应该推送对存储库X-Tests的更改,因为作业2可能使用与存储库X不同步的存储库X-Tests中的代码,从而导致测试失败。