CICD made as simple as possible
Missing "features" from idiomatic pipelines
- No dedicated CI build machine
- No dedicated deployment orchestrator
- No Docker
- No Kubernetes
- No container registry
Concepts
- Node daisy chain deployments
- Only need to compile one time, and no container registry needed because artifacts are just copied from one node to the next.
- Simple to reason about
- Don't need to maintain a bunch of pipeline infrastructure, just a reusable scripts and utilities.
- Ubiquitous tools only, meaning the linux distro should already contain everything if not almost everything by default
- Build on Dev machine
- It is already powerful enough to compile binaries quickly (otherwise you couldn't develop)
- Build cache is already there, you were just developing remember?
- Don't need to maintain or rent a separate beefy CI machine
- Hotfixes
- Ignore soak times and deployment windows and make all nodes in the chain match the desired version
- Pipeline orchestration
Utilities used:
- apt-get
- basename
- bash
- cat
- chmod
- chown
- cp
- flock
- go
- grep
- ln
- mkdir
- mv
- readlink
- rm
- rsync
- sops
- sort
- ssh
- stat
- sudo
- systemctl
- uname