user1003331
user1003331

Reputation: 239

Jenkins : how to check out artifact from Nexus and Deploy on Tomcat-

I am tying to set up a Jenkins Pipeline. The first stage is done, the code compiles, is tested, inspected and deployed to Nexus.

I would like now to make a second stage on the pipeline where the war is checked out from Nexus and deployed on tomcat.

Actually I already integrated the maven-tomcat plugin to deploy on Tomcat. My question is how can I check out the latest build of the war ?

Is there any maven or jenkins plugin for that ?

Many thanks,

Patrick

Upvotes: 20

Views: 30891

Answers (5)

devops-admin
devops-admin

Reputation: 1963

Below syntax has worked for me.

wget --user=admin --password=admin http://192.168.0.3:8081/repository/simpleapp-snapshot/in/javahome/simple-app/3.0.0-SNAPSHOT/simple-app-3.0.0-20210513.143540-1.war

Upvotes: 0

Yanis Yakuza
Yanis Yakuza

Reputation: 131

i get the same problem with curl, i solved it buy adding the parameter -L, so that curl will follow the redirection to download the artifact, wget follows the redirection by default.

Upvotes: 0

David I.
David I.

Reputation: 4767

See download-artifact-from-nexus.sh script at https://github.com/cescoffier/puppet-nexus/tree/master/files

In my case, I modified it to use wget instead of curl. For some reason, curl wouldn't work for me.

Upvotes: 3

Mark O'Connor
Mark O'Connor

Reputation: 77951

Your binary repository manager (Nexus) should ideally occupy the following position in you overall architecture:

enter image description here

You can use Jenkins as your provisioning tool, but ideally it should launch some sort of process which pulls the artifact to be deployed directly from Nexus (If nothing else it's more efficient).

This is a lot easier than it sounds. For example the Nexus REST API could be called from a shell script to download any desired revision of an artifact. For example:

$CATALINA_HOME/bin/shutdown.sh
curl -o $CATALINA_HOME/webapps/myfile.war http://myrepo.com/service/local/artifact/maven/redirect?r=releases&g=com.myorg&a=myfile&v=1.1.1&e=war
$CATALINA_HOME/bin/startup.sh

Finally, perhaps you might wish to consider a dedicated system for managing your deployments? An interesting solution I've been playing with is rundeck, which has a plugin for Jenkins. I really like rundeck, due to it's simplicity a trait it shares with Jenkins. There is also a plugin for Nexus that enables rundeck to provide a pull down list of artfacts eligible for deployment.

Upvotes: 20

SpaceTrucker
SpaceTrucker

Reputation: 13556

I suggest you create a new pom for this. That way you are not bound to jenkins. You need not explicitly checkout the artifact from nexus (note that this is called downloading from the repository in maven speech). You can specify a different war file location in the tomcat maven plugin. See the documentation. For downloading the latest version from the repository see the answers to this question.

Upvotes: 0

Related Questions