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