zpavel
zpavel

Reputation: 969

Jenkins pipeline not finish tomcat war deploy

I want to deploy a war from Jenkins using Tomcat manager. Here is what i am doing from command line :

curl -v -u user:pasword -T target/app.war "http://host:8180/manager/text/deploy?path=&update=true"

It takes a little bit time and works :

 * Hostname was NOT found in DNS cache
*   Trying ip...
* Connected to host.com (ip) port 8180 (#0)
* Server auth using Basic with user 'jenkins'
> PUT /manager/text/deploy?path=&update=true HTTP/1.1
> Authorization: Basic amVua2luczpLbzNEaUE=
> User-Agent: curl/7.38.0
> Host: host.com:8180
> Accept: */*
> Content-Length: 71682391
> Expect: 100-continue
> 
< HTTP/1.1 100 
* We are completely uploaded and fine
< HTTP/1.1 200 
< Cache-Control: private
< Expires: Thu, 01 Jan 1970 00:00:00 UTC
< Content-Type: text/plain;charset=utf-8
< Transfer-Encoding: chunked
< Date: Tue, 14 Aug 2018 13:18:22 GMT
< 
OK - Application déployée pour le chemin de contexte [/]
* Connection #0 to host host.com left intact

My problem is when i am execute this command in Jenkins Pipeline :

    stage('Tomcat Deploy') {
       sh "curl -v -u user:password -T app.war http://host:8180/manager/text/deploy?path=&update=true"
   }

The curl command is not finished correctly :

    + curl -v -u jenkins:pass -T app.war http://host:8180/manager/text/deploy?path=
* Hostname was NOT found in DNS cache
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying ip...
* Connected to host.com (ip) port 8180 (#0)
* Server auth using Basic with user 'jenkins'
> PUT /manager/text/deploy?path= HTTP/1.1
> Authorization: Basic amVua2luczpLbzNEaUE=
> User-Agent: curl/7.38.0
> Host: host.com:8180
> Accept: */*
> Content-Length: 71682391
> Expect: 100-continue
> 
< HTTP/1.1 100 
} [data not shown]
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage

And it goes to the next stage without waiting the curl deploy result. Is there any quick solution to fix that?

Upvotes: 1

Views: 957

Answers (2)

Vaibhav Jain
Vaibhav Jain

Reputation: 2243

A quick(but very bad) fix for this would be to put a sleep for some time in your code. sleep(30) This will give curl commad time to submit/upload your jar to your target server. ** Dont rely on this in Production **

Upvotes: 0

zpavel
zpavel

Reputation: 969

Yes the war was not uploaded. But i resolved my problem using --upload-file option. Now Jenkins wait for upload as attended. Thank you.

Upvotes: 0

Related Questions