A proposal for a CI system architecture where a controlling machine runs user scripts that shell out to a proxy binary, forwarding commands to remote runner boxes with different OS/CPU environments. The main challenges involve managing heterogeneous fleets of runners across Windows, macOS, and Linux, handling OS upgrades, and dealing with SSH's shell injection vulnerabilities and process management issues. The author argues that most CI complexity comes from managing diverse runner infrastructure rather than YAML configuration, which can be avoided using bash scripts, build systems, or existing programming languages.

2m read timeFrom matklad.github.io
Post cover image

Sort: