2011-06-29 31 views
1

我有一个执行构建以及执行svn导出的脚本。当我手动运行hudson时,通过从root用户运行hudson,我可以在不出现问题的情况下执行构建和svn导出。使用作为服务运行的Hudson执行svn导出时出现问题

如果我使用服务(chkconfig)调用哈德森,哈德森运行正常。 SVN签出(假设这是URL1)也很好,因为凭证存储在Hudson配置中。但是,当我的脚本尝试执行svn导出(不同于URL1;假设这是URL2),它总是失败。它说:“根'的密码:身份验证领域”。这基本上是错误的,因为我的构建服务器不能提供登录到svn所需的证书。这是我不明白,因为我将svn凭证存储在我的root帐户中,并且从shell执行svn update/svn info到URL2时没有问题,或者当我手动启动hudson(而不是服务)。

我现在的猜测是,当我们将应用程序作为服务运行时,它不会加载某些/所有存储的用户配置?任何想法如何强制服务加载我的svn凭证?任何其他解决方案/见解也是受欢迎的。

顺便说一句,我的建立服务器运行红帽5.6

谢谢!

回答

0

默认情况下,SVN将用户凭证存储在其对应的主目录中。当服务器重新启动时,它不会像Tobu指出的那样加载您的配置文件(在我的例子中是/ etc/profile)。所以要解决这个问题,我们只需要将HOME文件夹设置到正确的位置即可。修改你的服务脚本您的应用程序包括以下行:

HOME=/<<user home folder location>>

这解决了我的问题。

2

不能给你一个详细的答案,但交互式shell和作为服务运行时的差异之一是第一次启动时通过阅读〜/ .bash_profile,而第二次运行〜/ .bashrc 试试比较两个!

+0

感谢您指出这一点。我最终没有修改我的bash conf。 – lwijono

2

比较env在上下文中(在hudson和shell中)的输出应该可以帮助您解决这个问题。

+0

这确实给了我一些线索。谢谢! – lwijono