Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We've got a reasonably good release management process. However large parts of it are manual tasks, i.e. Promoting builds to QA, deploying builds to internal groups, tracking releases, etc.

The builds and tests are all automated with CruiseControl.

Can anyone recommend some good release management / continuous deployment tools that I can use to automate the rest of our process?

share|improve this question

closed as off-topic by gnat, GlenH7, MichaelT, Robert Harvey, Dan Pichelman Nov 30 '13 at 0:38

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, GlenH7, Community, Robert Harvey, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

What sort of software is it? Is it web-based or desktop? – Dean Harding Dec 11 '10 at 9:54
@Dean Harding it's Unix based server-side software. – Glen Dec 11 '10 at 10:45
Also please don't automatize everything. You must keep the opportunity to stop the process if something does not go well. – user2567 Dec 11 '10 at 15:21
@Pierre 303: "Gating" a process is orthogonal to automation. – dietbuddha Jun 2 '11 at 1:15
What do you mean by release tracking? Tracking which customers have which releases? If it's just what bugfixes/features went into a build wouldn't you just use the tags in the repository? – dietbuddha Jun 2 '11 at 1:29

For a detailed view of the vision / potential of release management software and various different tools that could be used to put together your own release management platform ... suggest to check out Continuous Delivery

For off-the-shelf software that focuses on release management ... recommend to check out

Each of these applications have specific functionality geared towards the release process through multiple different environments (dev, QA, prod) that is above and beyond what continuous build platforms provide.

share|improve this answer

I'm not too familiar with CruiseControl, but many of these manual tasks can be automated within a CI tool. I've used Hudson in the past, but I suspect CruiseControl will do it just fine.

If you work from trunk, create a "Promote build to QA" and a "Deploy to internal group" job, possibly with some sort of audit information. This might call out to a Maven, Capistrano, or Fabric script (depending on your environment) to do the deed. This doesn't require any special work - just a job that calls a shell script, possibly with some variables.

If you work in feature branches, you'll need to create a "Promote build to QA" or "Deploy to internal group" action on the builds being built against your feature branch. This might require you to make a plugin for your CI system. You might be able to use a job like above, but the job runner will need variables (like branch name or build number).

I'm not sure what you mean by tracking releases, but I've used two methods with CI tools in the past to keep track of when releases have gone out. The first is making the release a Hudson job, which means you get a history of job runs (with output). You can associate useful version data to the build in Hudson, so you can see at a glance which builds went out when. The second is using a callback in your deployment process. When the deployment is complete (or even if not), make a callback to your CI tool (or some other release tracker) that reports on the result (in Hudson, using either an external process monitor, or by triggering a build remotely).

Hope that helps.

share|improve this answer
+1 We used to build a complete automated release at a large utility company solely based on CruiseControl.NET and few support scripts written in Python. Anyone was able to trigger the process using the UI interface. – user2567 Dec 11 '10 at 11:41

4 easy steps to deployment/provisoning

  • take the versioned OS packages your CI creates and save them to the package repo(s)
    • YUM repo for RedHat/CentOS
    • APT repo for Debian/Ubuntu
  • Update the repo index (if required)
  • Use standard package management tools to update your servers
  • Bask in customer appreciation for using native packages
share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.