Edit this page | Blame

CI Rethink slides

Background

  • guix-forge is an independent general purpose project that powers our CI
  • guix-forge is built on laminar
  • CI jobs are just simple scripts
  • scripts are written in G-expressions, but don't have to be

So far

  • purpose-written scripts that were executed in profiles with the necessary dependencies
  • dependencies are from current Guix
  • container had to be rebuilt to update dependencies
  • jobs did not have access to high-level Guix features (package definitions, build systems, manifests, etc.)
  • jobs only understood low-level features (profile paths, store paths, etc.)
  • One advantage: job runs were fast

What's new?

  • jobs have access to the full expressive power of Guix
  • project repositories are channels
  • jobs pull from the channels and build all packages defined therein
  • job script definitions now in package definitions from channels
  • container need not be rebuilt each time dependencies change
  • Perfect reproducibility: Make Fred's life easier
  • One disadvantage: job runs will take a while

Why now?

  • Ludo's blog post “From development environments to continuous integration”
  • realization that project repositories could be channels
(made with skribilo)