2013-05-02 58 views
0

我在Jenkins上使用scp插件來傳達我的項目的WAR,它已經新建到遠程主機。如何通過詹金斯通過scp插件在遠程主機上訪問/ var/lib/tomcat6/webapps

手動地,我會將該WAR複製到該主機上的用戶,然後自己去那裏,獲取root(sudo)並將WAR複製到Tomcat將立即部署的/var/lib/tomcat6/webapps它。

然而,正如我不能找到一種方法,使用的tomcat6SCP的用戶,因爲用戶的tomcat6沒有發現密碼,我茫然地告訴詹金斯如何做到這一點不我的鍵盤交互 - 使用Jenkins進行渲染以進行連續部署毫無用處。

我在Precise服務器上運行Jenkins並且要部署WAR的遠程服務器也運行Precise。

感謝任何人閱讀這個問題,並感謝任何人誰可以讓我直接聰明的方式來實現這一點。

下面是相關的輸出(失敗)從詹金斯:

BUILD SUCCESSFUL 
Total time: 29 seconds 
[SCP] Connecting to app-1.site 
[SCP] uploading file: '/var/lib/tomcat6/webapps/myapp.war' 
ERROR: Failed to upload files 
3: Permission denied 
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289) 
    at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:485) 
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:439) 
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:406) 
    at be.certipost.hudson.plugin.SCPSite.upload(SCPSite.java:239) 
    at be.certipost.hudson.plugin.SCPRepositoryPublisher.perform(SCPRepositoryPublisher.java:211) 
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:776) 
    at hudson.model.Build$BuildExecution.post2(Build.java:183) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726) 
    at hudson.model.Run.execute(Run.java:1600) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:241) 
Build step 'Publish artifacts to SCP Repository' changed build result to UNSTABLE 
Finished: UNSTABLE 

有兩種解決方案,以嘗試,但我沒有看到任何好。在我看來,真正的方法是能夠使用tomcat6作爲一個真正的用戶開始。爲此,它必須有一個可控制的密碼。

解決方案,試圖

1)島賦予的tomcat6使用密碼。不知道a)是否可以完成,b)即使我們嘗試,它也可以工作,或c)這是否會破壞我現在不想做的Tomcat安裝。需要研究。

2)傑克的特權的/ var/lib中/ tomcat6中/ webapps中這樣,我的用戶或其他創建專門爲工作可以複製到該路徑和Tomcat願意部署任何被複制那裏。在構建期間,可能需要修改來自ant的WAR文件的權限。

回答

4

簡單地使子目錄的/ var/lib中/ tomcat6中/ webapps中

/var/lib/tomcat6 $ chmod a+w webapps 

這個工程用最少的努力,我想任何人觀察這個子目錄的權限也不會太驚訝。

+0

這也是我的解決方案,但它仍然不適合我。後來我注意到我試圖複製的jar文件已經在目錄中,並且我沒有對jar文件的寫入權限。所以我不得不爲文件做同樣的事情。 – 2016-07-15 08:59:11