Deploying a custom CI runner for Salsa using nspawn-runner

0. First, register a runner.

1. On the host, install nspawn-runner executable to /usr/local/bin/nspawn-runner.

2. Get the output of nspawn-runner toml, and replace the [[runners]] section of /etc/gitlab-runner/config.toml. Set the correct "name", "url", "token" as they were set in step 0.

3. Create an image named "unstable": nspawn-runner chroot-create unstable This will default to an unstable chroot.

4. Copy filter-output, from Salsa CI Team repo to /var/lib/nspawn-runner/unstable/usr/local/bin/

5. If apt-cacher-ng is available on the host, drop /etc/apt/apt.conf.d/000apt-cacher-ng-proxy to /var/lib/nspawn-runner/unstable/etc/apt/apt.conf.d/.

6. nspawn-runner chroot-login unstable then apt install gitlab-runner eatmydata

You're good to go.

Hint: tag the runner in gitlab's ci/cd settings, and tag the ci jobs accordingly, to avoid accidentally running other jobs in your dedicated runner.