如何在对私有github存储库进行推送时触发Jenkins构建

时间:2012-05-17 10:19:12

标签: git plugins github build-process jenkins

我的Jenkins Continuous Integration Server正在Ubuntu主机上运行,​​配置如下:

  • Jenkins v 1.463
  • github-api 1.23
  • Jenkins GIT插件1.1.18
  • GitHub插件1.2

轮询SCM有效。这很重要,因为我想让你知道我的其他jenkins相关配置运行良好,除了这个帖子构建触发器无意义。

我想配置Jenkins,以便在将更改推送到私有github存储库中的开发分支时,这将触发包含最新更改的构建。

回购是作为所有者在我的个人github帐户下。我们称之为所有者

我包括另一个github.com帐户作为合作者。我们称之为协作者

我这样做的原因是因为如果我不再参与该项目,其他人可以继续进行维护。

ubuntu中jenkins用户的SSH密钥存储在协作者

我咨询过以下链接:

http://nepalonrails.tumblr.com/post/14217655627/set-up-jenkins-ci-on-ubuntu-for-painless-rails3-app-ci

https://issues.jenkins-ci.org/browse/JENKINS-10391

https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin

http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/

https://wiki.jenkins-ci.org/display/JENKINS/Logging

http://blog.cloudbees.com/2012/01/better-integration-between-jenkins-and.html

没有一个不起作用。有些看起来有点过时甚至矛盾。

我已将github.com添加到jenkins ubuntu用户的knownhosts中。 我添加了github webhook。

我在jenkins尝试了手动和自动github webhook设置。

没有任何作用。

我需要一步一步指导如何在不轮询github的情况下实现这一目标。

2 个答案:

答案 0 :(得分:24)

我遇到了类似的问题,在查看了主要的Jenkins 系统日志之后,我看到了以下内容:

Feb 15, 2013 8:35:44 PM hudson.security.csrf.CrumbFilter doFilter
WARNING: No valid crumb was included in request for /github-webhook/.  Returning 403.

解决方案是关闭CSRF保护 - 管理Jenkins>配置系统>防止跨站点请求伪造攻击。该复选框位于第一个配置部分的底部。之后,这一切似乎都很愉快。

答案 1 :(得分:2)

创建一个记录器,其中包含com.cloudbees.jenkins网址下的/log类别的跟踪级别记录(管理Jenkins->系统日志)。

验证存储库管理屏幕的 Service Hooks 部分下是否有 Webhook URL 条目。

单击测试挂钩,您会在新创建的记录器下看到一些日志活动。

最后,检查已配置为由GitHub推送触发的构建的 GitHub轮询日志操作。

一个常见的错误是在没有更改的情况下测试像此的提交挂钩。

该钩子仅用于提示轮询,除非检测到更改,否则不会执行构建。