Continuous Integration and Delivery
of our Operating System


Stef Walter
Red Hat

  • What? The objective
  • Why? Complexity and stagnation
  • How? Machines as team members
  • Where are we?
  • When? Next steps

Continuous Integration

 
 

Continuous Integration

Assemble everything together like in production,
and then drive it like a user.

Continuous Integration

Do that integration for every single "change".
 

Continuous Delivery

Take that integration and deliver it.
 

Deliver Atomic Host

But why?

The effort of a solely human team does not scale
past a certain complexity point
 
Modularity Hacker
Professional on closed course. Do not attempt

We (have reached|will reach)
maintenance stagnation

So how?

MACHINES!

"But we use machines!"

You see the computer age everywhere
but in the productivity statistics
— Robert Solow

Goal: Machines as team members

Laws of Cyborg Teams

  1. Teaching a machine must be as easy as teaching a human
  2. Machines must produce feedback into the team's workflow
  3. A human should be able to impersonate a machine, and a machine impersonate a human

Tests: The Soul of a Robot

Teaching machines right and wrong, good and evil

Example: The new hotness

Where are we?


Scoped to Fedora Atomic Host
Step: The tests are stored in dist-git
Step: Lets update a package
Step: A git push triggers the pipeline
Step: A Fedmsg is generated when this happens
Step: Pipeline runs in Openshift in CentOS CI
Step: Jenkins schedules the pipeline
Step: The packages are built
Step: Basic unit tests are run
Step: An Atomic Host is composed
fedoraproject.org/wiki/Changes/InvokingTests
Step: Fedmsg is generated when the job is done
Step: Results are stored in resultsdb
Step: Greenwave is used to read resultsdb
Step: Results are displayed in Bodhi
Step: Bodhi gates on the results
  • Broken packages gated close to the change
  • Curate tests in a standard way
  • Grow responsibility for tests
  • Curate tests in a standard way

When? Next steps

Wheeeee!

  • Atomic Host development stream
  • Integration with Koji and MBS
  • Testing other branches
  • Pull request testing in Pagure
  • Non Atomic Host packages
  • Basic kernel tests

Questions?

fedoraproject.org/wiki/CI

#fedora-ci on Freenode

fedora-ci@lists.fedoraproject.org

Credits: stichlily on Flickr, ideonexus on Flickr, tt2times on Flickr, krupptastic on Flickr, striatic on Flickr, ArnoldReinhold on Wikipedia