Releasing software/Using Continuous Integration - What do most companies seem to use?

Posted by Sagar on Programmers See other posts from Programmers or by Sagar
Published on 2011-02-07T23:06:43Z Indexed on 2011/02/07 23:33 UTC
Read the original article Hit count: 245

I've set up our continuous integration system, and it has been working for about a year now. We have finally reached a point where we want to do releases using the same. Before our CI system, the process(es) that was used was:

(Develop) -> Ready for release -> Create a branch -> (Build -> Fix bugs as QA finds them) Loop -> Final build -> Tag

(Develop) -> Ready for release -> (build -> fix bugs) Loop -> Tag



Our CI setup:
1 server for development (DEV)
1 server for qa/release (QA)

The second one has integrated into CI perfectly. I create a branch when the software is ready for release, and the branch never changes thereafter, which means the build is reproduceable without having to change the CI job. Any future development takes place on HEAD, and even maintainence releases get a completely new branch and a completely new job, which remains on the CI system forever, and then some.

The first method is harder to adapt. If the branch changes, the build is not reproduceable unless I use the tag to build [jobs on the CI server uses the branch for QA/RELEASE, and HEAD for development builds].

However, if I use the tag to build, I have to create a new CI job to build from the tag (lose changelog on server), or change the existing job (lose original job configuration).

I know this sounds complicated, and if required, I will rewrite/edit to explain the situation better. However, my question:

[If at all] what process does your company use to release software using continuous integration systems. Is it even done using the CI system, or manually?

© Programmers or respective owner

Related posts about version-control

Related posts about business-process