Continuous Integration (CI) systems are systems that build and test software automatically and regularly. Though their primary benefit lies in avoiding long periods between build and test runs, CI systems can also simplify and automate the execution of many otherwise tedious tasks. These include crossplatform testing, the regular running of slow, dataintensive, or difficulttoconfigure tests, verification of proper performance on legacy platforms, detection of infrequently failing tests, and the regular production of uptodate release products. And, because build and test automation is necessary for implementing continuous integration, CI is often a first step towards a continuous deployment framework wherein software updates can be deployed quickly to live systems after testing. Continuous integration is a timely subject, not least because of its prominence in the Agile software methodology. There has been an explosion of open source CI tools in recent years, in and for a variety of languages, implementing a huge range of features in the context of a diverse set of architectural models. The purpose of this chapter is to describe common sets of features implemented in continuous integration systems, discuss the architectural options available, and examine which features may or may not be easy to implement given the choice of architecture. Below, we will briefly describe a set of systems that exemplify the extremes of architectural choices available when designing a CI system. The first, Buildbot, is a master/slave system; the second, CDash is a reporting server model; the third Jenkins, uses a hybrid model; and the fourth, PonyBuild, is a Pythonbased decentralized reporting server that we will use as a foil for further discussion.
CITATION STYLE
Dalton, J. (2019). Continuous Integration. In Great Big Agile (pp. 151–152). Apress. https://doi.org/10.1007/978-1-4842-4206-3_22
Mendeley helps you to discover research relevant for your work.