如何通过scp插件从Jenkins到远程主机上的/ var / lib / tomcat6 / webapps

时间:2013-05-02 22:12:32

标签: tomcat jenkins jenkins-plugins

我正在使用Jenkins上的 scp 插件来传达我刚刚为远程主机构建的项目WAR。

手工,我会将该WAR复制到该主机上的用户,然后自己去那里,获取root(sudo)并将WAR复制到 / var / lib / tomcat6 / webapps Tomcat会立即部署它。

但是,由于我找不到使用 tomcat6 作为 scp 用户的方法,因为用户 tomcat6 没有可发现的密码,如果没有我的键盘交互,我无法告诉Jenkins如何做到这一点 - 使用Jenkins进行连续部署是无用的。

我在Precise服务器上运行Jenkins,部署WAR的远程服务器也在运行Precise。

感谢所有人阅读这个问题,并感谢任何能够让我直截了当地完成这一任务的人。

以下是Jenkins的相关输出(失败):

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文件的权限。

1 个答案:

答案 0 :(得分:4)

只需创建子目录 / var / lib / tomcat6 / webapps 可写

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

这只需要很少的工作量,我认为任何观察此子目录权限的人都不会太惊讶。