2011-06-29 35 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