Usually we talk about CI as a process. We can start from very simple "checkout, build, test and deploy" idea and we might come to some complex scheme of interconnected tasks or jobs with different pipelines fulfilling certain requirements, but we mostly remain within the process scope dealing with problems like what to automate, how to automate and in which order to run those automated tasks.
However in this talk we are going to step back a bit and look at CI as an infrastructure, i.e. the system of services, which is constantly evolving to catch up with changes happening in the base project. We will go through number of examples trying to figure out basic principles and common patterns of CI infrastructure, and discuss the ways to solve common problems arising from them.
To organize the discussion we will structure it in groups:
Services group includes topics like:
- setup and update system,
- message bus and status reports,
- artifacts storage and distribution.
In Master group we put questions related to build system configuration, such as:
- difference between interactive and non-interactive build systems,
- proper use of templates for jobs configuration,
- version control.
There are also Workflow questions like:
- should people get access to debug failures in place and how to organize it?
- how to test test?
As an extension for setup and update system topic we'll go through questions which deal with test environment, such as:
- How to add new worker?
- How to check it?
- Will Docker containers solve all of our problems?
While this talk doesn't provide you with the recipe of the perfect CI, it could help you to prepare for the challenge which designing CI infrastructure definitely is.