将war文件自动部署到jenkins的错误

时间:2013-04-16 07:30:34

标签: tomcat deployment jenkins tomcat7 jenkins-plugins

尝试自动部署到我们的tomcat服务器时出现此错误。

  

错误:发布者hudson.plugins.deploy.DeployPublisher由于中止而中止   异常org.codehaus.cargo.container.ContainerException:失败   重新部署   [/home/affiza/workspace/mimos-test-deploy/dist/met-server.war] at   org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:195)     在   hudson.plugins.deploy.CargoContainerAdapter.deploy(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)at at   hudson.remoting.UserRequest.perform(UserRequest.java:118)at   hudson.remoting.UserRequest.perform(UserRequest.java:48)at   hudson.remoting.Request $ 2.run(Request.java:326)at   hudson.remoting.InterceptingExecutorService $ 1.call(InterceptingExecutorService.java:72)     at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334)     在java.util.concurrent.FutureTask.run(FutureTask.java:166)at   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:服务器返回HTTP响应代码:403为URL:   http://test.mest.my:8080//manager/text/list at   sun.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个

我需要做什么?

5 个答案:

答案 0 :(得分:3)

我认为这是关键:

...
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 
...

403 means Forbidden

  

服务器理解请求,但拒绝履行请求。   授权无效,请求不应重复。如果   请求方法不是HEAD,服务器希望公开   为什么请求没有得到满足,它应该描述原因   因为该实体的拒绝。如果服务器不想做   此信息可供客户使用,状态代码404(不是   找到了)可以代替使用。

所以你可能在Jenkins作业中有错误的部署配置(你尝试部署的地方错误,不允许的地方),或者你的Tomcat没有正确配置而且不允许部署(至少不是Jenkins的工作方式)试图这样做。)

答案 1 :(得分:2)

向用户添加角色“manager-script”,

  

请注意,对于Tomcat 7以上,使用管理器所需的角色   应用程序已从单个管理器角色更改为以下内容   四个角色。您需要分配所需的角色   您希望访问的功能。

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

答案 2 :(得分:1)

将以下角色添加到tomcat-users.xml

  1. manager-gui - 允许访问HTML GUI和状态页面 - 在tomcat的gui界面中提供访问权限

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

     <tomcat-users><role rolename="manager-gui"/><role rolename="manager-script"/><user username="deployer" password="deployer" roles="manager-gui"/>
    

      我不知道下面两个

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

答案 3 :(得分:0)

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

答案 4 :(得分:-2)

上面的例外情况是 - 您已经在远程服务器和部署中部署了相同的工件。无法重新部署它,只需删除已部署的artiface,这将有效,但如果你想重新部署相同的工件,你需要更改插件中的配置..