Hudson在收到SVN post-commit触发器时没有构建项目

时间:2013-02-25 23:31:47

标签: continuous-integration hudson build-triggers

我正在尝试设置Hudson持续集成服务器,以便任何SVN提交都会触发新的构建。我在stackoverflow上看到了很多关于配置SVN服务器的问题和答案,但在配置Hudson方面却没有多少。

我已经向SVN服务器添加了一个提交后挂钩,它将在提交时联系Hudson。我正在使用此处描述的post-commit钩子:http://wiki.hudson-ci.org/display/HUDSON/Subversion+Plugin

但SVN提交后不会触发构建。我从上面的post-commit钩子脚本中获取了UUID值,并将自己的HTTP POST请求发送到Hudson服务器:

http://<server>/hudson/subversion/<uuid>/notifyCommit?rev=<rev>

Hudson日志显示以下内容:

WARNING: No subversion jobs using SCM polling

所以我的HTTP POST请求到达了Hudson,但是Hudson抱怨没有配置任何作业来处理此通知。

根据上面的链接,我需要(a)设置SCM轮询(任何时间表都足够)和(b)允许匿名读取访问和(c)禁用跨站点漏洞检查。

因此,我将我的一个Hudson作业配置为使用SCM轮询进行夜间构建,并验证已禁用跨站点漏洞检查。我还禁用了“启用安全性”选项,这意味着(我假设)允许匿名读取访问。

然后我再次发送表示SVN提交通知的HTTP POST请求。这次系统日志中没有消息,暗示没有SCM轮询的作业没有警告。但仍然没有建设。

在我看来,Hudson可以通过HTTP POST请求识别构建触发器,并且知道有一个SCM轮询的作业可以接受构建触发器,但是无法触发构建。

我想知道我需要做些什么来解决这个问题。我是否需要启用安全性并明确允许匿名读取访问?或启用“任何人都可以做任何事情”授权选项?我是否需要以某种方式更改SCM轮询(当前设置为“0 2 * * *”)?

任何帮助表示感谢。

编辑:我在Tomcat中运行Hudson,Tomcat在Windows XP上作为服务启动。

1 个答案:

答案 0 :(得分:1)

在v3.0.0之前(v2.2.1及更早版本),Hudson中的轮询功能有两个含义:

1)如果选择轮询并输入计划,该作业将运行,在指定时间查找任何更改。此作业将忽略SCM中的任何提交后挂钩,就像构建根本没有轮询的作业一样

2)启用轮询,但保留实际轮询字段空白。这允许Hudson进行“被动”轮询:即,在Hudson提交后提交触发器之前,它会无所事事,并且只有在那时才会运行构建作业。

我的建议是按照您的方式启用轮询,但要取消计划。让社区知道这是否可以解决您的问题。