maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Graham Leggett <minf...@sharp.fm>
Subject Re: Deployment
Date Sat, 02 Mar 2013 14:47:50 GMT
On 01 Mar 2013, at 11:26 PM, Eric Kolotyluk <eric.kolotyluk@gmail.com> wrote:

> A while back we had some interesting discussions on using Maven, or
> maven-like technology for deploying production software. I was wondering if
> anything new has been happening since then.
> 
> Basically what I am hoping to see is a generic installer framework that
> bootstraps deployment of a production system or service the way Maven
> bootstraps a development environment.
> 
> Can anyone point me to anything happening on that front?

For a number of years now I've been involved in packaging the configuration of systems over
and above the code of systems in the native format of that system, for Redhat derivatives
that would be RPM. In other words, you deploy code packaged as an RPM, as well as configuration
packaged as an RPM, and then you add the last very small details (passwords, certificates)
via chef/puppet.

Given that the majority of code we were building was built and released with maven, it was
a natural extension that the configuration we were building was also built and released with
maven, and so about a year ago I started getting the rpm-maven-plugin to build configuration
RPMs.

This effort uncovered a number of maven bugs, the clean plugin was found to be incapable of
deleting symbolic links (it now can), and maven-filtering component used by the resources
plugin couldn't escape the "$" character used in shell scripts (now it can), and the rpm-maven-plugin
had various other bugs (now fixed).

If you use the latest versions of the resources, clean and rpm plugins, building configuration
packages as RPM works very well.

Using native packaging formats built by maven means that from an operations perspective, the
software and the code "is just a package" and therefore something operations people are likely
to be able to work with and understand, and at the same time the building and releasing of
these packages "is just maven" and are therefore something developers are likely to be able
to work with and understand.

In our environment, "deploy the production software" is just "yum install [production-software-config]".
More importantly, "oh no, the upgrade broke everything" is responded to with "yum downgrade
[production-software-previous-version]".

Using this technique should also be possible with other systems like Debian derivatives, you
would need to choose a maven plugin able to create Debian packages, but the principle is the
same.

Regards,
Graham
--


Mime
View raw message