gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:35:51 25 4
gpt4 key购买 nike

我在 Jenkins 上使用 scp 插件将我的项目的 WAR 新构建到远程主机。

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

但是,由于用户 tomcat6 没有可发现的密码,因此我找不到将 tomcat6 作为 scp 用户使用的方法,我无法告诉 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 文件的权限。

最佳答案

简单地使子目录/var/lib/tomcat6/webapps可写

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

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

关于tomcat - 如何通过 scp 插件从 Jenkins 访问远程主机上的/var/lib/tomcat6/webapps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16348575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com