Continuous Integration server performance monitoring
Kerkelä, Joni (2018-05-08)
© 2018 Joni Kerkelä. Tämä Kohde on tekijänoikeuden ja/tai lähioikeuksien suojaama. Voit käyttää Kohdetta käyttöösi sovellettavan tekijänoikeutta ja lähioikeuksia koskevan lainsäädännön sallimilla tavoilla. Muunlaista käyttöä varten tarvitset oikeudenhaltijoiden luvan.
Julkaisun pysyvä osoite on
Continuous Integration (CI) is standard practice in Agile software development for source code management, including handling changes between development branches and master branch, and providing feedback for stakeholders. In the Continuous Integration the desirable practice is for development branches the be merged in to master branch daily. Before development branches is to be merged to master branch, the automated test tests builds are run on them and feedback of the tests is provided to developer and possible other stakeholders. If the tests are run without errors, the development branch is to be merged to master branch. The problems may arise, when the automated test build durations have variance. This leads developers to experience volatile service level causing irregularity to development process. The cause for the build duration variance can be the variance in the available system resources in the CI server. In some cases, the resource variation can cause false failures on the test build results as for example when there is defined maximum test build duration time limiter or when individual build step operation produces timeouts. To be able to resolve the resource starvation on the CI server, there needs to be means for identifying the resource starvation events in relation to test build statistics. By being able to identify relation between build statistics and resource starvation events, root cause, as starving resource, can be identified. By identifying the starving resource or resources, the system resources can be updated by adding more specific resource or handling the starvation through reserving the specific resource for key processes. The objective for this research is to implement monitoring tool for monitoring the Jenkins server’s builds and system resources during the builds. The thesis was conducted in the case company’s CI project including large-scale development project as customer project. The problem with case company was volatile test build durations and very insufficient data about system resources in the starvation events. The implemented monitoring tool achieved for providing extensive system resource data with combining it with the test build statistics to provide information about system resource availability in relation to test build statistics. The results indicate that the monitoring tool can be used for identifying resource starvation events and possible root causes for the events. The limitation of the implemented monitoring tool is the dependency for the database server as Elasticsearch. Elasticsearch was chosen to be used as database to establish adaptive monitoring data presenting functionality via Kibana server. This restricts portability of the monitoring tool to Jenkins instances as the monitoring tool needs mentioned instances for full functionality.
- Avoin saatavuus