## Simple CI

"Continuous Integration in a bitreich way"
       - A discussion

Ivan J. <[email protected]>


## Why?

* I want this for Maemo Leste

* There isn't a simple solution yet
       * https://stackify.com/top-continuous-integration-tools/
       * More than fifty, all look repulsive

* All current solutions are convoluted, mostly not modular, and
 require many resources and dependencies

* A lot of CI implementations require _something_ graphical
       * Configuration
       * Dashboard
       * etc.

* Many features offered in "modern" CI solutions are never used or
 needed, let's start from scratch and figure out what is actually
 necessary


## How?

* My propositions:
       * drist
       * Makefiles
       * Shell scripts?

* All of these should work on Linux/BSD/OSX

* The tooling can be isolated in a small chrooted system
       * Although the problem of nested chroots arises


## drist

* Simple

* Already a deployment tool
       * Means multiple build nodes can be easily supported

* Might even work unmodified


## Makefiles

* Simple if you know what you're doing

* Deterministic

* Fast


## Shell scripts

* Simple

* Portable

* Good for glue


## Discussion

* Can these be combined into CI tooling?
       * Obviously yes.

* How to make it clean?
       * How to work with chroots in this manner?

* One drist rule/module for everything or modular modules?
       * (Insert Xzibit Yo dawg meme)
       * Separate jobs to push/compile/pull or all in one?

* How to set up pipelines and job dependencies?
       * If push/compile/pull fails, you need to stop and report
       * Makefiles just rage quit
       * Shell scripts might help out here

* User management and permissions?

* Setting a standard or not?
       * Having a set of standard functions/calls that need to exist