2012-03-24 277 views
1

我有一個工作失敗的奴隸,建立好主人。 SVN安裝在主站上的相同位置和從站/usr/local/bin/svn上。我有一個Jenkins用戶在奴隸,它可以運行svn --version好。詹金斯奴隸無法找到svn

[INFO] Executing: /bin/sh -c cd /var/jenkins/workspace/projecta && svn --non-interactive update /var/jenkins/workspace/projecta

[ERROR] Provider message: 
[ERROR] The svn command failed. 
[ERROR] Command output: 
[ERROR] /bin/sh: svn: not found 

我使用Subversion的插件,並能正常工作的奴隸,並在作業開始運行。問題似乎是一些模塊使用maven build編號插件。

正如你在上面的日誌中看到的,這個腳本似乎是作爲Jenkins用戶在從服務器上運行的,並且在不同版本的主機上提取客戶端。

所以,我認爲它是用Subversion插件版本檢查代碼,然後嘗試在主機的PATH上更新舊版本。這一切都工作正常,因爲這隻有一個版本的SVN。

+0

您可以提供完整的日誌以及config.xml作業嗎? – 2012-03-24 16:59:36

+1

如果從Jenkins用戶的提示符運行'/ bin/sh -c svn - 非交互式更新/ var/jenkins/workspace/projecta'會怎麼樣? – 2012-03-24 19:19:08

+0

另一個指針:寫一個包含shell構建步驟的作業,執行_env_,將其綁定到從站,並檢查輸出,特別是PATH。 – 2012-03-24 21:31:52

回答

7

注意:Jenkins Shell作爲/ bin/sh運行,而不是bash,所以很多你期望在bash中可用的路徑實際上並不存在。即使您成功運行svn --version作爲jenkins用戶,您可能會使用bash(因此它已將某些正常路徑加載到您的PATH變量中)。

OPTION 1

以下內容添加到你的 「執行shell」 或shell腳本:

PATH = $ PATH:在/ usr/local/bin目錄

這應該讓它找到顛覆。但是,您必須爲每項工作都做到這一點。

選擇2 - 更好的選擇

你的另一個選擇是添加你從配置頁面中的以下內容:

配置

環境變量

名= PATH value = $ PATH:/ usr/local/bin

這應該爲您在此從站上運行的每個構建自動設置它。如果您認爲合適,您可以在這裏找到其他路徑

再一次請注意,當您在從屬頁面上進入「系統信息」時,這將不會顯示(它顯示您的默認系統信息)。但是,它會被添加到每個構建

+0

謝謝,這讓我在svn:找不到錯誤 – cdog 2012-03-27 13:11:35

+0

我曾以爲使用顛覆插件意味着我不需要這樣做,但我現在知道這取決於你正在運行的插件 – cdog 2012-03-27 15:02:31

+0

是的:)很高興成爲幫幫我。我認爲插件只是有助於利用您系統上已有的內容。只需要一點點正確的方向哈哈。 – Sagar 2012-03-27 15:30:21