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

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


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


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.


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.