The CI system as implemented by KDE uses Jenkins Pipelines extensively to control how jobs are executed. Pipelines are a form of configuration as code, and allow for the entire lifetime of the job to be controlled. The templates used by the CI system can be found in pipeline-templates/ with each platform having it's own template file.
All of the Pipelines follow the same broad set of steps, with few differences existing between the templates. These steps are:
- Checkout Sources
- Setup Dependencies
- Configuring Build
- Capturing Installation
- Running Tests
- Checking Code Quality
Should any step fail, execution is stopped there and does not continue any further. Different platforms require different templates due to differences in how they are setup. FreeBSD and Windows builds for instance are executed on statically provisioned machines, and therefore ensure the Workspace is cleaned at the start of each build something which isn't needed for the Docker based Linux builds.
As a final step, regardless of failure or success, the Pipeline will determine whether it is necessary to send out a notification email and send accordingly. Emails are sent whenever:
- The build state changes (from unstable to success for instance)
- The build is unstable (has failing tests)
- The build failed (did not configure, compile or install successfully)
Additionally, a copy of the Workspace will be captured whenever the system completes building a job and the result of that job is either unstable or a failure. These captured workspaces can be downloaded from the CI Artifacts Store.