代码之家  ›  专栏  ›  技术社区  ›  Swapnil Kotwal

仅对github上推送的更改运行一次Jenkins作业

  •  1
  • Swapnil Kotwal  · 技术社区  · 11 年前

    我跟着去了 this answer 建立一个詹金斯的工作,工作很顺利。

    我已经在github主提交推送上安排了一个作业

    Poll SCM : * * * * *
    

    但是,它每分钟都会连续启动一个构建作业。

    我如何限制它,使其每次提交推送仅运行一次?

    2 回复  |  直到 9 年前
        1
  •  1
  •   Paul Hicks    11 年前

    有几个选项。我最成功的两个例子是:

    1. 使用 git commit hook 调用 Jenkins rest API 开始作业。简单的方法是直接调用作业的构建API调用(类似于 http://jenkinsmachine:8080/job/your-作业名称/内部版本 ),但这将硬编码作业名称并将其分支到git hook脚本中。更灵活的方法是使用 Git plugin's 自己的rest mini API,如Kohsuke在 his blog .
    2. 使用类似于 Throttle Concurrent Builds plugin 或者创造性地使用从属节点和执行器来限制该作业的cuncurrent构建的数量。

    第一个选项非常可取,但有时无法从git机器对jenkins机器进行rest访问,因此在这种情况下可以使用第二个选项。

        2
  •  1
  •   luboskrnac    11 年前

    这种方法实际上是轮询。这意味着如果GitHub存储库中没有任何更改,Jenkins会每分钟扫描一次。

    如果你想从Github真正推送到Jenkins,你需要将Github WebHooks与Jenkins集成。我写了一篇 blog post on this subject .滚动到第2节:“Jenkins-Github集成”

    如果你只是在玩或者在你的个人开源项目中使用它,你可能想看看Jenkins的替代品,比如Drone.io或Codeship.io。这些服务通常是开源免费的,只需点击几下就可以配置GithubWebhook。但它们不适合复杂的企业构建。