1

我正在尝试设置 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 上作为服务启动。

4

1 回答 1

1

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

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

2) 启用轮询但将实际轮询字段留空。这使得 Hudson 可以“被动地”轮询:即,它处于空闲状态,直到提交后触发器到达 Hudson,并且只有在那个时候才会运行构建作业。

我的建议是像您一样启用轮询,但取消时间表。让社区知道这是否可以解决您的问题。

于 2013-04-01T17:41:50.013 回答