Automated Deployment with Maven - Going the Whole Nine Yards

DZone 's Guide to

Automated Deployment with Maven - Going the Whole Nine Yards

· Java Zone ·
Free Resource

Last week I gave a talk at the Agile 2009 conference about automating the deployment process with tools such as Maven, Nexus Cargo, Liquibase and Hudson. Here is a brief description of the talk:

Automating your build process with Continuous Integration is certainly a great idea, but why stop there? Why not go the whole nine yards and automate the deployment process as well? Staging and production deployments are typically more complicated and more involved than a simple development deployment, but doing them by hand can be time-consuming, tricky and error-prone. Indeed, turning your staging and production deployments into a one-click affair has a lot going for it.

This talk discusses a number of strategies for automating your deployment process, and shows how you can integrate CI tools like Hudson and Bamboo with other tools such as the popular JIRA issue tracking software for an (almost) seamless deployment experience. In particular, it will show in practical terms how to automate the deployment using Bamboo, JIRA and Nexus in a real-world multi-module Maven web application. The talk includes topics such as:

  • How to integrate your build and deployment strategy with JIRA’s release management feature
  • Subversion tagging strategies, and automatic Subversion tagging
  • How to use a Maven repository manager to deploy and archive artifacts,
  • How to use to automate the release process, and integrating Maven with JIRA and Bamboo
  • How to automate deployment to different platforms (integration, staging, production, and so on)
  • Handling automated redeployments and roll-backs
  • How to set up automatic smoke tests
  • How to handle security and traceability issues

You can view (and download) the slides here.

From http://weblogs.java.net/blog/johnsmart


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}