Is continuous integration about more than just automatically testing code, either periodically or after every commit to the main repository?Before today, I'd heard the term CI, and about CI services such as Jenkins, and RunCodeRun, and assumed that it was merely about having a server independent of developers' machines that checked that the automated tests of a project passed, and alerting people if it doesn't.However, Wikipedia's definition seems to be different.If my understanding of what CI is is incorrect, is there any term that merely refers to automatically running tests on an independent server?
Is continuous integration more than just automatically testing code?
terminology;continuous integration
The gist of CI is to avoid any kind of long-term branches. If you have a team working on a product, a model opposed to CI is to pick a new requirement for a feature to develop for the product. Then the team creates a feature branch in the VCS, apart from the trunk or master branch, they develop and test the feature for several days in isolation, reintegrate it afterwards into the trunk and then do final integration tests (note that in between other parts of the team could have made changes to the trunk as well).In CI, you split the new feature into several sub-parts, each of them creating still a working and compilable product, and integrate that sub-part into the main trunk very often, typically multiple times a day. There are no branches with big differences from the trunk, and if different groups of people are working on different features simultanously, they will daily (continously) reintegrate all their changes to the code base. Almost all tests are always running on the integrated work, there will be almost no tests on non-integrated parts (except the tests each dev runs on his own local copy before committing his changes).For this, you should have a server supported automatic build process in place and a lot of automatic tests which run at that server as well. This will give immediate feedback to the team if the changes they made might cause any problems on the integrated product. You won't need an extra test phase to check if the integration of a bigger feature into the product causes any problems. But those automatisms are just supporting tools to make CI work well, these steps are not the steps which actually define CI.