2015-03-02 27 views
0

您好,我需要一些幫助來覆蓋詹金斯的螞蟻的user.home屬性。我在jenkins上創建了一個簡單的工作,它在主服務器的輔助機器上運行構建腳本。腳本的任務之一是使用ant的user.home屬性並訪問某些文件。問題是,當我嘗試在從機的命令行中回顯此屬性時,我看到C:\Users\Administrator,但是當我從Jenkins服務器運行完全相同的腳本時,我看到C:\。這種差異導致構建在Jenkins上失敗。任何人都可以告訴我這種差異的原因是什麼?有什麼辦法可以重寫這個嗎?如何從Jenkins服務器覆蓋ant的user.home屬性?

我試過在我的作業的配置文件中有一個名爲user.home的屬性,但似乎沒有選中它。另一個有趣的一點是,當我在配置文件中改變了user.home值一些胡言亂語並運行在從服務器上的命令行螞蟻,它仍然把它撿起爲C:\Users\Administrator

我使用ant 1.7.1Jenkins 1.598

回答

1

你jenkins可能會以與管理員不同的身份運行。這是一件好事。

ant中的屬性是不可變的,所以你可以從jenkins中的ant插件中指定這些屬性,並且它們將覆蓋任何其他值。 (點擊invoke ant buildstep下的高級查看屬性文本框)。

,我建議你不要覆蓋user.home而是重構你的螞蟻所以有config.location屬性,默認爲user.home,但可以overidden,無論你從詹金斯希望。這看起來似乎不自然ovrride user.home

+0

所以這是有點複雜。我會盡量以最好的方式解釋它。我創建了一個調用'BUILDA.xml'並使用'CONFIGA.INI'的簡單作業。在這個構建文件中,我基本上下載了一些文件並做了一些重構。現在,在其中一個目標中,我更改了ant build dir幾次,並使用不同的配置文件。這些是我沒有編寫的構建腳本,它們使用屬性'user.home'來訪問某些文件。我嘗試在'CONFIGA.INI'中添加'user.home',但沒有幫助。另外,我在不同的從站上運行與其他用戶相同的工作。 – 2015-03-02 23:34:16

+0

我發現的唯一解決方法是以管理員用戶身份啓動Jenkins和奴隸服務,並將奴隸重新連接到主服務器,以便它獲取最新的'user.home'。 你說使用與管理員不同的ID來啓動Jenkins是件好事。這是爲什麼? – 2015-03-02 23:34:20

+0

這是一件安全的事情。隨着奴隸進程本身和它運行的代碼。如果從服務器以管理員身份運行,則錯誤或惡意用戶可能會導致問題。考慮是否有人在您的ant構建腳本中添加了一個exed'cmd rmdir/s/r c:\'。我知道這不太可能,但最好限制管理員帳戶的使用。 – thekbb 2015-03-03 02:34:59