The point of Continuous Integration?
I have always thought the point of Continuous Integration was feedback. By doing builds and running tests (unit, integration, and functional) as often as possible it provided the team a high degree of confidence that the application worked. Artifacts are simply a nice side effect.
I was in a retrospective today where the importance of the build seemed to focus more on the artifacts. We were discussing pipelining our build and the discussion centered around breaking the build down by artifacts as opposed to areas of feedback.
Personally, I find this a little strange. The last several projects I have been on, the various builds we had were all about providing feedback as quickly as possible. To this end, the first build ran unit and integration tests, the second build ran all the functional tests (think Selenium), with other builds running more in depth functional and acceptance tests.
To quote Martin Fowler, “The whole point of continuous integration is to find problems as soon as you can.” To me, this sounds like information and feedback, not artifacts.
My question to the greater, and more experienced, community is what do you think, should pipelining a build be about artifacts or feedback or a bit of both? Currently, one of our builds takes 2+ hours and we are looking to cut that down. I am not sure we can do this if we concentrate on artifacts instead of feedback. What do others think?