Developing and Maintaining a CI-system Coin
Toivola, Elias (2024)
Toivola, Elias
2024
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2024060420816
https://urn.fi/URN:NBN:fi:amk-2024060420816
Tiivistelmä
Qt Group is a company that develops a cross-platform C++ library called the Qt framework, it is a versatile toolset with many modular libraries that enables creation of high-performance software with native-like user interfaces for desktop, mobile and embedded systems. Qt RnD developed an in-house Continuous Integration (CI) system, named Coin, to offer the developers of Qt framework a powerful and an agile testing pipeline, which now has been in active use since 2016.
As Qt framework has grown with new features and requirements, so has its pipeline. New developers need to be onboarded to use and develop CI / Coin, new products and features need to be integrated into the pipeline, tasks for Coin need to be streamlined. Part of this process includes writing documentation to help picture what implementations Coin has and why they were made. This explanatory thesis was written to be a starter or an onboarding guide to anyone who wants to learn about large-scale CI and Coin: what are the essential methods and tools that a developer uses in CI and Coin, and how you can use them to build, maintain, and improve a CI-system.
The thesis’ general picture about CI systems was formed from around a year-long experience working on Qt’s CI system by completing tasks related to the CI system and documenting the observations, steps and mapping out the pipeline environment during everyday work. Active notetaking and a graph tool were used to picture out pipeline services, their architectures and common routines or tasks related to them. This material was then condensed and tidied up for this thesis, which were fact checked and feedback was given by Qt RnD senior developers who have +5 years of experience working with Coin and developing it.
Many of the results of this thesis was reviewed in that feedback, the content was generally praised as good learning material, but some improvement possibilities were found: the ordering of topics could have been better, the CI/Coin terms could have been more standardized, the Coin architecture graphs left some details to interpret, but do provide a general direction of how it works.
The resulting documentation are to be used in this thesis and in Qt’s internal documentation wiki site. They provide useful information and encourage new ideas to develop CI.
As Qt framework has grown with new features and requirements, so has its pipeline. New developers need to be onboarded to use and develop CI / Coin, new products and features need to be integrated into the pipeline, tasks for Coin need to be streamlined. Part of this process includes writing documentation to help picture what implementations Coin has and why they were made. This explanatory thesis was written to be a starter or an onboarding guide to anyone who wants to learn about large-scale CI and Coin: what are the essential methods and tools that a developer uses in CI and Coin, and how you can use them to build, maintain, and improve a CI-system.
The thesis’ general picture about CI systems was formed from around a year-long experience working on Qt’s CI system by completing tasks related to the CI system and documenting the observations, steps and mapping out the pipeline environment during everyday work. Active notetaking and a graph tool were used to picture out pipeline services, their architectures and common routines or tasks related to them. This material was then condensed and tidied up for this thesis, which were fact checked and feedback was given by Qt RnD senior developers who have +5 years of experience working with Coin and developing it.
Many of the results of this thesis was reviewed in that feedback, the content was generally praised as good learning material, but some improvement possibilities were found: the ordering of topics could have been better, the CI/Coin terms could have been more standardized, the Coin architecture graphs left some details to interpret, but do provide a general direction of how it works.
The resulting documentation are to be used in this thesis and in Qt’s internal documentation wiki site. They provide useful information and encourage new ideas to develop CI.