【问题标题】:How can I make a Jenkins build for a GitHub repository be triggered by a push to a different repository?如何通过推送到不同的存储库来触发 GitHub 存储库的 Jenkins 构建?
【发布时间】:2014-08-15 00:10:25
【问题描述】:

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

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

  1. 一个什么都不做的作业,它的 GitHub 存储库是 X,其中的构建是通过推送到 X 来触发的
  2. 运行测试的作业,其 GitHub 存储库是 X-test,其中构建由作业 1 的完成触发
  3. 制作 pip 轮等的作业,其 GitHub 存储库是 X,其中构建由作业 2 的完成触发

有没有更简单的方法?

【问题讨论】:

    标签: python github jenkins


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哦,好吧。您能解释一下如何让作业 3 使用作业 1 的“工件”(或者只是作业 1 运行时存储库的状态)吗?
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多