Tuesday, 27 March 2012

Development Environment Must-Haves: Standard Build and Deploy

In this short series I'll outline the tools you really do need for a professional quality software development environment. Many of them will seem like common sense to many of you. Many of them have been inexplicably missing from development environments I've seen over the past few years. The list isn't meant to be "the final solution" - you may have these things, you may have alternatives, you may have nothing at all - in which case...

Standard Build and Deploy

Photo credit: nyuhuhuu on Flickr
Some years ago I was lead developer on a Java project and had about 6 software developers working for me. We had a "standard build" which we were developing using ant in order to streamline the development process. Our source code was being managed in VSS. I was often frustrated to find that I would get the latest code base from VSS and that the build didn't work. I would look at the check-in history and ask the programmer about their changes, and the fact that they didn't compile. The programmer would invariably look confused and say "well, it compiled in -" and then name an IDE application they were using on their PC. I think we had some with JBuilder some with Netbeans some with IntelliJ and it was a bit of a free-for-all despite my client trying to standardise.

This was where the drive for the standard build came from, to have something which would be the "de-facto" process, where the components would be built and packaged, and if it didn't build there, it was regarded as a failure.

With time, the IDEs were standardised, but I do remember impressing on my team on more than one occasion that "It doesn't matter if it builds in JBuilder. It doesn't matter if it builds in Netbeans. All that matters is that it builds when I build it using the standard build ant task".

Using a tool like ant, it's only a small step to run tasks to carry out deployments, and having spent some time going back to manual deployments (in a case where there were no tasks implemented) the value of these were underlined even more.

Summary of Gains

  • Consistency of builds
  • Easier management of build artefacts (built code libraries and also support files)
  • Faster deployment of artefacts for testing

No comments:

Post a Comment