Linux 使用作为服务运行的Hudson执行svn导出时出现问题

Linux 使用作为服务运行的Hudson执行svn导出时出现问题,linux,svn,hudson,Linux,Svn,Hudson,我有一个脚本,可以执行构建和svn导出。当我手动运行hudson时,通过从根用户运行它,我可以毫无问题地进行构建和svn导出 如果我使用服务chkconfig给哈德逊打电话,哈德逊运行正常。SVN checkout假设这是URL1也可以,因为凭证存储在hudson配置中。但是,当我的脚本尝试执行与URL1不同的svn导出时;假设这是URL2,它总是失败。它表示“根”的密码:身份验证域。这基本上是一个错误,因为我的生成服务器无法提供登录到svn所需的凭据。这是我不理解的,因为我将svn凭据存储在我

我有一个脚本,可以执行构建和svn导出。当我手动运行hudson时,通过从根用户运行它,我可以毫无问题地进行构建和svn导出

如果我使用服务chkconfig给哈德逊打电话,哈德逊运行正常。SVN checkout假设这是URL1也可以,因为凭证存储在hudson配置中。但是,当我的脚本尝试执行与URL1不同的svn导出时;假设这是URL2,它总是失败。它表示“根”的密码:身份验证域。这基本上是一个错误,因为我的生成服务器无法提供登录到svn所需的凭据。这是我不理解的,因为我将svn凭据存储在我的根帐户中,并且从shell或当我手动启动hudson而不是作为服务时,对URL2执行svn更新/svn信息没有问题

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

顺便说一句,我的构建服务器正在运行Red Hat 5.6


谢谢

无法给出详细答案,但交互式shell与作为服务运行时的区别之一是,第一次启动时读取~/.bash_profile,第二次启动时读取~/.bashrc
试着比较一下这两者

无法给出详细答案,但交互式shell与作为服务运行时的区别之一是,第一次启动时读取~/.bash_profile,第二次启动时读取~/.bashrc
试着比较一下这两者

比较hudson内和shell内两种上下文中的env输出应有助于解决此问题。

比较hudson内和shell内两种上下文中的env输出应有助于解决此问题。

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

家=/


这就解决了我的问题。

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

家=/


这解决了我的问题。

这确实给了我一些线索。谢谢这确实给了我一些线索。谢谢谢谢你指出这一点。但我最终没有修改我的bash配置。谢谢你指出这一点。但我最终没有修改bash配置。