What Gives? Continuous Integration & Half Continuous Integration

31 בדצמבר 2008

תגיות: ,
2 תגובות

So, first thing first. What is Continuous Integration (CI)?

Martin Fowler:

"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?

kick it on DotNetKicks.com

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

2 תגובות

  1. Gregory Mostizky31 בדצמבר 2008 ב 13:58

    It is worth adding that for a team that does not follow any continuous integration practice, the first step of actually getting a build server (even without any tests) is an extremely important and valuable one.

    For advanced teams it may seem like very small issue, but for those just starting on agile journey the first steps will bring a lot of value and also show the way to better things. Do not get discouraged, start small and you will be on the way in no time.

  2. Eric Minick2 בינואר 2009 ב 16:00

    What CI gives you is rapid feedback about the health of your project. If you have no automated tests, then you only get that rapid feedback about whether the build builds or not. That's good progress.

    But even with unit tests, do you really know that you can ship? Probably not. The color schemes might be unattractive or there may be interactions between parts of the system that are best flexed through functional testing.

    We like seeing teams start with getting a CI build started and then pushing their CI efforts further down the quality spectrum. Can you get your fast unit tests run with every build? How about functional tests running as often as you have hardware for them? Can you take a build that has passed unit and automated functional testing and get it to your human QA teams more frequently?

    Can you grease the wheels so that a deployment to UAT takes 10 minutes rather than four hours?

    All these things start building on eachother quite nicely.