我正在尝试设置 Hudson 持续集成服务器,以便任何 SVN 提交都会触发新构建。我在 stackoverflow 上看到了很多关于配置 SVN 服务器的问题和答案,但在配置 Hudson 方面却不多。
我在 SVN 服务器上添加了一个提交后挂钩,它将在提交时联系 Hudson。我正在使用此处描述的提交后挂钩:http ://wiki.hudson-ci.org/display/HUDSON/Subversion+Plugin
但是在 SVN 提交后不会触发构建。我从上面的提交后挂钩脚本中获得了 UUID 值,并将我自己的 HTTP POST 请求发送到 Hudson 服务器:
http://<server>/hudson/subversion/<uuid>/notifyCommit?rev=<rev>
之后哈德逊日志显示以下内容:
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 上作为服务启动。