EuroBSDCon 2024

Building an open native FreeBSD CI system from scratch with lua, C, jails & zfs
09-22, 17:15–18:00 (Europe/Dublin), Foyer A

Setting up Continuous Integration & Delivery tools always seems to be very painful. And yet with the powerful tools like ZFS, lua in base, pf.conf and jails on FreeBSD, this could be a whole lot easier. Maybe, even, fun?

This talk covers the following areas, with specific implementation details on FreeBSD.

Interfaces both community and technical

  • what might an "open" CI look like?
  • how could we foster that?
  • the agent-server protocol
  • the per-job configuration
  • server workflow that allows distributing and processing multiple concurrent tasks to many agents

Implementation

  • using jails from C for great good
  • libUCL for validating incoming data
  • Lua and specifically the C-Lua interface, how to use it to build a user-facing plugin system, and how to add a pub-sub system

I hope that, eventually, these tools will be able to be used on more than just FreeBSD, so this should be of interest for all BSD-powered people and organisations.

My wounds from over a decade of Jenkins and many other CI tools have still not healed. They probably never will. Instead, let's talk about building a native CI from scratch, and paper over the scars with something beautiful, and new, and with different bugs and flaws.

See also:

Dave has spent the last 2 decades trying to stay at least 1 step ahead of The Bad Actors on the internet, starting off with OpenBSD 2.8, and the last 9 years with FreeBSD since 9.3, where he has a ports commit bit, and a prediliction for obscure functional programming languages that align with his enjoyment of distributed systems, & power tools with very sharp edges.

  • Professional Yak Herder, shaving BSD-coloured yaks since ~ 2000
  • FreeBSD ports@ committer
  • Ansible DevOops & Elixir developer
  • enjoys telemark skiing, and playing celtic folk music on a variety of instruments
This speaker also appears in: