1

我按照这个答案设置了 Jenkins 工作,并且工作正常。

我已经在 github master commit push 上安排了一个 Job 作为

Poll SCM : * * * * *

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

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

4

2 回答 2

1

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

如果你想真正从 Github 推送到 Jenkins,你需要将 Github WebHooks 与 Jenkins 集成。我写了一篇关于这个主题的博客文章。滚动到第 2 部分:“Jenkins - Github 集成”

如果您只是在玩弄它或将它用于您的个人开源项目,您可能需要研究 Jenkins 替代品,例如 Drone.io 或 Codeship.io。这些服务通常是免费的开源服务,只需点击几下即可配置 Github Webhooks。但它们不适合复杂的企业构建。

于 2015-03-08T21:50:41.060 回答
1

有几种选择。我使用最成功的两个是:

  1. 使用git commit hook调用Jenkins rest API来启动作业。简单的方法是直接调用作业的构建 API 调用(类似于http://jenkinsmachine:8080/job/your-jobs-name/build),但这会将作业名称和分支硬编码到 git hook 脚本中。一种更灵活的方法是使用Git 插件自己的 rest mini-API,正如 Kohsuke 在他的博客中所描述的那样。
  2. 使用Throttle Concurrent Builds 插件或创造性地使用从节点和执行器来限制该作业的当前构建数量。

第一个选项是首选,但有时无法从 git 机器访问 jenkins 机器,因此在这些情况下可以使用第二个选项。

于 2015-03-08T22:41:45.690 回答