2015-05-29 69 views
0

我有一個在Git(和code.amazon.com)中籤入的Java包,我有一個Ant作業來觸發包。在Ant工作中,我爲Git創建了一個macrodef,我正在執行git fetchgit reset,以便每次觸發Ant作業時都可以獲取最新的代碼庫。觸發Git獲取,使用Jenkins重置

當我使用Eclipse觸發Ant作業時,它正在工作。如果我使用ANT –buildfile my_buildfile.xml從終端運行Ant作業,它也可以正常工作。

現在我已經在我的機器上安裝了Jenkins,並試圖運行Ant文件。 Jenkins無法在Ant文件中觸發Git作業。由於這個原因,錯誤的

/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:81: The following error occurred while executing this line: 
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:99: Execute failed: java.io.IOException: Cannot run program "git": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) 
    at java.lang.Runtime.exec(Runtime.java:617) 
    at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) 
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428) 
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442) 
    at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628) 
    at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669) 
    at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 

部分原因可能是,我的詹金斯是不能夠觸發任務作爲主機的當前用戶:這是給下面的錯誤。

爲了解決這個問題,我已經嘗試採取以下步驟:

  1. 創建一個全球性的證書,並使用無密碼的帳戶(RSA ID)。
  2. 使用與系統相同的用戶名登錄到Jenkins。
  3. 安裝Git和Git客戶端插件並正確設置它們。

請讓我知道如果我失去了一些東西,如果有任何出路。如果我的方法不正確,我會很高興如果你能分享其他幾個想法。

+0

什麼是錯誤? –

+0

簡單的git pull怎麼不能做到這一點?爲什麼抓取和重置? – fge

+0

奧列格!我已經添加了錯誤。不管我是否做GIT拉或取。我無法調用任何GIT命令是真正的問題。 –

回答

0

@ Dr.Bokko是正確的......我應該感謝他指導正確的方向。我試圖給出完整的答案。有三個因素,我們可以用JENKINS來設置GIT。

  • 第一因子:要訪問GIT存儲庫,如果它是公共存儲庫,則不需要用戶憑證。但對於訪問受限的GIT存儲庫,我們需要確保傳遞適當的憑據。需要爲Jenkins安裝Git和Git客戶端插件才能瞭解GIT操作。
  • 第二個因素:在運行腳本之前,添加一個構建步驟並導出所有作爲shell腳本一部分所需的庫。
  • 第三因素:最後檢查Manage Jenkins部分中的系統配置並檢查Jenkins認爲的環境變量。如果它們不合適,則轉到節點管理鏈接,並將所有環境變量作爲KEY-VALUE對。

希望上面提到的這些步驟能夠解決這個問題。出現在您的堆棧跟蹤

2

我認爲這是關係到git的配置上你的主人(或節點)

這個解決方案應該努力解決您的問題:

Jenkins giving error while cloning from gitHub

+0

非常感謝Dr.Bokko博士。但是我在做了很多打頭之後已經發現了這個問題。 –

0

以下錯誤:

Cannot run program "git": error=2, No such file or directory 

這也就意味着,git的可執行文件未安裝或不能在運行過程中ANT的命令路徑。

這並不完全清楚你爲什麼從ANT給GIT打電話。通常詹金斯會先執行代碼結帳(使用GIT),然後再打電話給ANT。我強烈建議調查這個替代工作流程,這可能需要爲Jenkins安裝一個GIT插件(不記得這是否是默認插件)。