5

Say you have a traditional dev > test > production process say on a monthly release cycle.

What are some of the steps you need to take and put into place to move towards a model of continuous delivery with frequent releases per day.

Please make one suggestion per response. I would be interested in using voting to indicate which steps the community feel are most important.

4
  • 2
    Given your developers have put together the actual program(s) that need to go to the customer, what then needs to be done to actually do a full delivery?
    – user1249
    Apr 26, 2012 at 10:46
  • 5
    I am not sure, if list like answers are on topic. And voting may not reflect importance, but quality of answer. Apr 26, 2012 at 10:46
  • 3
    the first paragraph of that wikipedia link tells you a number of things you should do to achieve this - automated testing, continuous integration and automated deployments.
    – ozz
    Apr 26, 2012 at 10:55
  • What environment is this for? That would help direct you to specific resources. Apr 26, 2012 at 12:09

6 Answers 6

10

I'll kick this off to get us started....

Automated Testing

Having automated unit tests, integration tests and acceptance tests are vitally important if we're going to allow everything to flow straight through to production.

Even the best and most thorough manual testing process in the world would simply take too long if the application has any degree of complexity.

4

Setup version control (if not already) and define a branching model/strategy to follow.

The shorter your release cycles are, the more important branching will become and every developer must rely on certain branches to be in defined states.

4

I would suggest to have communication transparency between your
Development team <-> Testing team <-> Clients.
Cause most of the problems arise because of miscommunication.
Probably setup a sharepoint site to display the current status of development so everyone is aware of whats going on.

Update: Try also to plan a project status review meeting (every week possibly).

1
  • I think and want to notice: it's important to do it as often as possible.
    – OZ_
    Apr 26, 2012 at 11:25
3

You need to automate the complete delivery cycle, so one feature you will need is

automatic deployment

For web applications, this often seems to be trivial, for desktop applications this depends a lot on how your production environment looks like and may be far from trivial.

2

Rollbacks

A fast and reliable rollback is going to be massively important if you are going to open the gates to continuous delivery.

In the case of issues, you want to be able to switch back to the previous known version of the software at the first sign of problems.

Closely related to this would be good monitoring tools that quickly alert you to odd states or errors that are occuring in your application.

1

I find that the quickest and biggest improvement to get folks moving down the path is to set up a build machine and integrate it to kick off builds when code is checked in to version control. Even if the boss doesn't let us move any further down the CI/CD path, having builds ready all the time saves on stress and eliminates the "only Bob has the right stuff on his machine to make the build and he went home hours ago" stress.

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