So, first thing first. What is Continuous Integration (CI)?
"Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily – leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible."
What will you gain?
If you select to use CI, you will have several major benefits:
- The technical benefit – You will never break your build, meaning that your build and thus the compilation of your entire code will always succeed.
- The functional benefit – On every build you will execute your automated tests (e.g. unit tests) meaning that those tests will keep you safe functionally. You will never break something old with something new.
- The immediate release benefit – Once you have the build ready, you can ship your new build version potentially to everyone (e.g. Test, Production).
Of course there are other benefits, but this is powerful practice.
Can I do it half way?
Lets say that you do not have any Unit Tests or other automated tests in your project, does it mean you cannot practice CI?
Well, Unit Tests will keep you safe so you will never break anything and potentially you can be production ready at anytime.
If you do not have any unit tests you will be able to benefit only half of the benefits within CI. Let me explain, lets say that every check in, the build process will be invoked and will insure that technically you are safe. That means that the project will always compile. That is good! You will be able to fix technical integration problems immediately, however you will not be able to release the last check in at any moment since you have no protection, you have no tests to keep you safe.
To sum it up, you get the technical benefit but you will not get the functional benefit and the immediate release benefit.
Is that good enough for you?