Tomcat 自动将war文件部署到jenkins时出错

Tomcat 自动将war文件部署到jenkins时出错,tomcat,deployment,jenkins,tomcat7,jenkins-plugins,Tomcat,Deployment,Jenkins,Tomcat7,Jenkins Plugins,我在尝试自动部署到tomcat服务器时遇到此错误 错误:Publisher hudson.plugins.deploy.DeployPublisher由于以下原因中止 异常org.codehaus.cargo.container.ContainerException:未能删除 重新部署 [/home/affiza/workspace/mimos test deploy/dist/met server.war]位于 org.codehaus.cargo.container.tomcat.inter

我在尝试自动部署到tomcat服务器时遇到此错误

错误:Publisher hudson.plugins.deploy.DeployPublisher由于以下原因中止 异常org.codehaus.cargo.container.ContainerException:未能删除 重新部署 [/home/affiza/workspace/mimos test deploy/dist/met server.war]位于 org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:195) 在 部署(CargoContainerAdapter.java:64) 在 hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:90) 在 hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:77) 在hudson.FilePath$FileCallableWrapper.call(FilePath.java:2309)处 执行(UserRequest.java:118) 执行(UserRequest.java:48) 请求$2.run(Request.java:326) hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) 位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在java.util.concurrent.FutureTask.run(FutureTask.java:166)处 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 在java.lang.Thread.run(Thread.java:722)处,由以下原因引起: java.io.IOException:服务器返回URL的HTTP响应代码:403: 在 net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625) 在 org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:504) 在 org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:622) 在 org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:635) 在 org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176) ... 还有13个


我需要做什么?

我认为这是关键:

...
java.lang.Thread.run(Thread.java:722) Caused by: java.io.IOException: 
Server returned HTTP response code: 403 for URL: 
http://test.mest.my:8080//manager/text/list at 
...
:

服务器理解该请求,但拒绝满足该请求。 授权没有帮助,请求不应重复。如果 请求方法不是HEAD,服务器希望公开 为什么请求未得到满足,应说明原因 对于实体中的拒绝。如果服务器不希望 此信息可供客户端使用,状态代码为404(不适用) 找到)可以改为使用

因此,您可能在Jenkins作业中有错误的部署配置(尝试部署的位置错误,不允许部署),或者您的Tomcat配置不正确,不允许部署(至少不是Jenkins作业尝试的方式)。

将角色“管理器脚本”添加到用户

注意,对于Tomcat7以后的版本,使用管理器所需的角色 应用程序已从单一管理员角色更改为以下角色 四个角色。您将需要分配任务所需的角色 您希望访问的功能

manager-gui - allows access to the HTML GUI and the status pages
manager-script - allows access to the text interface and the status
manager-jmx - allows access to the JMX proxy and the status
manager-status - allows access to the status pages only

上面的例外是说-您已经在远程服务器中部署了相同的工件&重新部署失败,只需删除已部署的工件,这将起作用,但如果您想要重新部署相同的工件,则需要更改插件中的配置

向tomcat-users.xml添加以下角色

  • manager gui—允许访问HTML gui和状态页面—这允许访问tomcat的gui界面

  • manager脚本-允许访问文本界面和状态-提供对Jenkins运行的外部脚本的访问

     <tomcat-users><role rolename="manager-gui"/><role rolename="manager-script"/><user username="deployer" password="deployer" roles="manager-gui"/>
    
    
    
    我不知道下面两个

    • manager jmx-允许访问jmx代理和状态
    • 管理器状态-仅允许访问状态页面

  • 您应该在更改conf文件夹中的任何内容后重新启动tomcat

    它与jenkins中提供的内容不同吗?