Quick Build

In my search for an effective tool for managing builds and releases, I’ve decided on QuickBuild.  It’s basically a commercial version of LuntBuild, with some nifty management features added in. 

One of the nicer things about it is the ability to set properties for an app, and have them propagate to different configs for that app (dev, QA, staging, UAT, production), while having the ability to override certain values (say, DB username and password, etc…).

Like CruiseControl, it works well for continuous builds when integrated with your source control system.  Subversion and QuickBuild work together quite nicely.  Though, unlike CruiseControl, QuickBuild allows for “on-demand” deployments, and it’s promotion management features make it a cinch to migrate code from dev -> QA -> staging -> produciton.

I’m currently adding my apps to QuickBuild, and I’ve found it to be really easy to setup, use, and manage.  The end goal is to automate as much of the release process as possible, allowing for more predictable, repeatable, and consistently “problem-free” production releases.

Plus, it certainly would be nice to be able to release apps remotely via a web-based interface.  Now, if I can just figure out how to access QuickBuild from the golf course…
🙂

Advertisements

3 Responses to “Quick Build”

  1. AnotherReleaseGuy Says:

    Hi ReleaseGuy,

    This is AnotherReleaseGuy 😉 My comment is not really related to your last post, but I would like to ask/discuss the following point: how do you “manage” different releases in different environments against a timeline? How do you keep track of these and how to report?

    Here’s some more context to my question:

    I’m working in a typical corporate environment: TEST, QA and PROD application servers and related dbases, cvs for source code mgmt, Jira for bugtracking, Maven2 and Continuum for building and deploying.

    Of course, a new web app is first put in TEST for some time, then in QA (business users sign off) and finally in PROD.

    When a new release makes it to PROD, this code base is tagged in cvs. At the same time, we’re working on different branches for big chunks of extra functionality. As every code branch (incl. HEAD) can have a different timing for deployment in TEST, QA and PROD, I’ve made a powerpoint file to keep track of these timelines for each branch. But do I really need to do something like that in Powerpoint??? (or Visio etc) ? Aren’t there any tools out there to help to manage the big picture?

    I hope you understand my question.

    thanks for some feedback,
    cheers,
    AnotherReleaseGuy

  2. theReleaseGuy Says:

    Hi Another ReleaseGuy,

    Yep, I know exactly what you mean, it’s definitely a challenge to plan and manage the timing of releases to differrent environments without stepping on the toes of developers or QA engineers.

    All this time, I thought I was the only one struggling to find a good solution to this issue! Unfortunately, I never could find a nice tool to manage the timing of upcoming releases to different environments…

    I just ended up putting together a small database with all of the release info about different apps and targets, etc. I just have all my apps and envs in there, with planned upcoming releases and stuff. Then I’ve got a simple view that tells me when releases to dev/integration, QA, or prod are coming up. It’s probably not the best solution, but it does the trick, and is a little more powerful than a timeline sort of doc in ppt or visio.

    Some pertinent fields in there are:
    – app name
    – planned QA release (date)
    – planned prod release (date)
    – current app state (in dev, in QA, QA approved, released to prod, etc)

    Over time, this little db has grown to be fairly complex, with a few tables and a bunch of views/reports. I’ve gotten my engineers in the habit of adding/updating info in there, and I’ve got my release request form tied to the db so it gets updated as releases are requested for different environments. This way I can slice and dice the info as needed. It’s surprising how handy this is for planning and managing schedules, etc.

    The main thing is to establish a standard process for releases, and try to get everyone to follow along. It can be tough to get everyone on board, but if you can take some control over the planning and scheduling of release, it’ll make your life a lot easier.

    I hope this helps!

    -ReleaseGuy

  3. AnotherReleaseGuy Says:

    Hi ReleaseGuy,

    Thanks for the feedback.

    Since my last comment, I’ve been googling around to see what’s on the market. Nothing specific it seems. This is what I came up with for the moment, it’s not perfect but it’s close enough:

    I’m using (abusing ?) a Gantt chart for showing my release info and planning. This gives me an infinite timeline on which I can show both release history as release planning. It’s much more easy to work with than ppt/visio. Have a look at http://www.ganttproject.org. It has less features than MS Project, but is has all I need and it’s free and open source. Besides, it saves all project info in an XML file, which opens some perspectives after reading your last comment.

    Putting all info in a dbase is a good idea: you could extract all info you need from that dbase and build your own XML file (using XSLT), based on the format that the Ganttproject uses. Then you have a visual view on your release history and planning in one shot!

    Add to this the fact that you can export the Gantt stuff as png or html files, and you could easily integrate this release info in your intranet.

    I use Maven for building and deploying, so now I’m thinking of writing some code that, at every maven build/deploy, will save the info you described in a dbase, and then use another piece of code to extract this info from dbase and convert it into a Gannt xml file. It’s a rough idea and should need more consideration, feel free to comment on this.

    greetz,
    AnotherReleaseGuy

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: