我有一个GitHub存储库(称之为X)用于Python代码包,以及一个单独的GitHub存储库(称之为X-tests),其中包含该包的测试(它们是单独的存储库,因为包含测试的存储库是私有的,因此它可以运行其他私有代码)。我想这样做,当有人推送到X存储库时,Jenkins将从X-tests存储库运行测试,然后做一些与X存储库相关的其他事情(例如制作一个点轮)。
我能想到的唯一方法就是有三个独立的Jenkins工作:
有没有更简单的方法呢?
答案 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中的代码,从而导致测试失败。