使用jenkins将war文件重新部署到tomcat服务器失败

使用jenkins将war文件重新部署到tomcat服务器失败,tomcat,grails,jenkins,Tomcat,Grails,Jenkins,首次成功将War文件部署到tomcat服务器(如果在webapps文件夹中找不到War文件)。再次构建war文件并在第二次失败时部署,并出现以下错误 |Compiling 1 GSP file for package [jasper] .. |Building WAR file ............................................................................................. |Done creating W

首次成功将War文件部署到tomcat服务器(如果在webapps文件夹中找不到War文件)。再次构建war文件并在第二次失败时部署,并出现以下错误

|Compiling 1 GSP file for package [jasper]
..
|Building WAR file
.............................................................................................
|Done creating WAR target\ROOT.war
Deploying G:\practice\jenkins\jobs\Grails-Jenkins\workspace\ccsystem\target\ROOT.war to container Tomcat 7.x Remote
  [G:\practice\jenkins\jobs\Grails-Jenkins\workspace\ccsystem\target\ROOT.war] is not deployed. Doing a fresh deployment.
  Deploying [G:\practice\jenkins\jobs\Grails-Jenkins\workspace\ccsystem\target\ROOT.war]
ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [G:\practice\jenkins\jobs\Grails-Jenkins\workspace\ccsystem\target\ROOT.war]
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:111)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
    at hudson.FilePath.act(FilePath.java:990)
    at hudson.FilePath.act(FilePath.java:968)
    at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
    at hudson.model.Build$BuildExecution.post2(Build.java:185)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
    at hudson.model.Run.execute(Run.java:1763)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
Caused by: java.io.IOException: Error writing request body to server
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3192)
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3175)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.pipe(TomcatManager.java:647)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:538)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:611)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:291)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:102)
    ... 17 more
java.io.IOException: Error writing request body to server
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3192)
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3175)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.pipe(TomcatManager.java:647)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:538)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:611)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:291)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:102)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
    at hudson.FilePath.act(FilePath.java:990)
    at hudson.FilePath.act(FilePath.java:968)
    at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
    at hudson.model.Build$BuildExecution.post2(Build.java:185)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
    at hudson.model.Run.execute(Run.java:1763)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
Build step 'Deploy war/ear to a container' marked build as failure
Sending e-mails to: krishna.vardhireddy@gmail.com
Finished: FAILURE
使用插件(或带有
Exec命令的SSH插件
)。通常,我们将脚本放在那里,类似于:

sleep 7
rm -rf /home/tomcat_projectName/webapps/api.projectName.com
rm -rf /home/tomcat_projectName/webapps/api.projectName.com.war
cp /home/jenkins/jenkins-data/api.projectName.com.war /home/tomcat_projectName/webapps/api.projectName.com.war
rm -rf /home/jenkins/jenkins-data/api.projectName.com.war
/home/tomcat_projectName/bin/startup.sh
使用插件(或带有
Exec命令的SSH插件
)。通常,我们将脚本放在那里,类似于:

sleep 7
rm -rf /home/tomcat_projectName/webapps/api.projectName.com
rm -rf /home/tomcat_projectName/webapps/api.projectName.com.war
cp /home/jenkins/jenkins-data/api.projectName.com.war /home/tomcat_projectName/webapps/api.projectName.com.war
rm -rf /home/jenkins/jenkins-data/api.projectName.com.war
/home/tomcat_projectName/bin/startup.sh

使用
cargo:redeploy
而不是
cargo:deploy
应该可以解决问题。

使用
cargo:redeploy
而不是
cargo:deploy
应该可以解决问题。

在第二次放置文件之前尝试删除文件。。看看这是否清除了我们不想为每个部署手动执行的问题。如果这样的话,就不用使用jenkins了。一个好习惯就是总是清理tomcat缓存目录/work/Catalina/jenkins将如何进行缓存清除我认为您应该研究从java.io.IOException开始的错误:将请求主体写入服务器时出错:。。看起来像tomcat配置-无jenkins Related尝试删除该文件,然后再将其放入第二次。。看看这是否清除了我们不想为每个部署手动执行的问题。如果这样的话,就不用使用jenkins了。一个好习惯就是总是清理tomcat缓存目录/work/Catalina/jenkins将如何进行缓存清除我认为您应该研究从java.io.IOException开始的错误:将请求主体写入服务器时出错:。。看起来像tomcat配置-与jenkins无关