CI/CD hell
more or less a rant about overengineering automatic pipeline and procedures.
I'm a nerd (was that a question? This is Gemini) and specifically in IT I like the does and tools of automation. I had my little story with CI/CD, starting from when I wanted to publish the Pathfinder campaign diary with Sphinx.
Sphinx builds its documentation with Makefile and python. I made a pipeline on Bitbucket to start a Sphinx container to build the repo content in HTML and then rsync into my server (not this one, a free hosting service with slow ftp connection and so on). I had to study the bitbucket pipeline standard to setup the two passages:
- Build: compile the html with Makefile, alert if error
- Deploy: on greenlight deploy with ftp and mirror option
I could manage my documentation straight from bitbucket interface and tools. Building the pipeline was a fun experience I used during my job interview.
Now i work with a big company. Like all big company it doesn't trust its employees (even less its consultants). With the advent of Agile and DevOps, the company adopted a full CI/CD infrastructure. But in this seemingly good automation feature lies the heart of a beast.
The pipeline is less a tool and more a bureocratic procedure, a Kafkian horror we can say. The tool is managed by a team, they manage every passage of the build and should at the same time be compatible with every possible project in every possible language, build system and scaffolding. The product is then stored in a server by another team. This server have a request limit, so in the time the build requests all the dependencies the repository blocks the build server and then it cannot upload the product, failing all the procedure.
This dreadful experience (with many more details I spare you) excavated its place in my mind.
After a while I started configuring this capsule. I starting working on creating a CI/CD pipeline to deploy the gemlog once pushed on the remote repository. I was working on deploying static pages and then working out on compiling macro defined pages, then the experience returned to hount me.
"Gosh, I do REALLY want to make my gemlog bureocracy?", like:
- I do not compile my capsule
- I do not plan gemlogs or (worse) write automatic gemlogs with some AI
- I can just execute a shitty twoliner script once in a while and to the work.
A crappy twoliner script would do the work in the same time I do git add, git commit and git push.
Sometime our interest for technology makes us imagine incredible castles of code and magic, an army of automatons to sort out every aspect of our hobby. Those happend to be more fun to build than to use. Especially when a problem occour and you end up fixing your mess of vibecode.
That probably looks ridicolous for just a deploy pipeline, but even a simple CI/CD pipeline forces me to work with systems that provide one for free, or manage a pipeline externally, keep up with possible IP changes from the builder server and be informed on possible vulnerabilities on opening a hole in my server for a pipeline.
Rethinking my first pipeline, I think I could have also deployed that with a script. Time ago using CI/CD sounded more fun and still is today. But that time this idea also sounded the best solution. Good I did that, now I know that wasn't the best solution and I can recognize when this best solution scenario will happen.
CYA.