summaryrefslogtreecommitdiff
path: root/topics/ci-rethink-slides.gmi
blob: e8cb6015be7d816fce324b35bc852fe2c2775ae9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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