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
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
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
You see the computer age everywhere
but in the productivity statistics
— Robert Solow
Goal: Machines as team members
Laws of Cyborg Teams
- Teaching a machine must be as easy as teaching a human
- Machines must produce feedback into the team's workflow
- 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
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
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
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