On Jenkins

On Jenkins

Recently I attempted to introduce Jenkins in as a build tool to my developer environment for projects like coldsky.net, openmobo.com and LFG.

I have been a container driven developer for about the last four years mainly with Docker. Recently while developing containers, I decided there were too many services that required deployment. Moving from development to Production became a long endeavor frequently. So I set off to automatically deploy my Docker containers.

Swarm

Docker swarm was insanely easy to setup. itpro.tv has a wonderful series on Docker and a short enough intro to show the essentials. If you've been using Docker and Compose for awhile this is trivial.

Think of swarm as a cluster of computers that just figures itself out and you deploy your containerized software to the "cloud" you host. Paired with Nginx as a proxy and at times a round robin load balancer, it becomes wildly easy to configure a multi tenant swarm with docker containers and services. Google Domains now supports CNAMES in DNS with ease, so you can setup nginx to treat visits to itself from different CNAMES to proxy redirect to single or multiple hosts. Tying this in with Swarm, you can have a single service easily round robin between multiple hosts. I'm talking like 5 minute service setup for a microservice and a new host. As long as the SSL certificate is a wildcard for multihost, this is easily done. This also comparitively is easier than shipping nginx with each compose deployment to address SSL.

Jenkins

It was god awful. Jenkins was easy to install but the setup documentation for plugins like Docker and Docker swarm were so minimal as to be one sentence instruction, as bad as nonexistent.

Even looking past setup...the interface and syntax for workflow steps are bad. The interface was blocky, but with no clear 1:1 expectation for what would execute on the machine and in what context (directory). The interface was different service to service.

After a day of frustrations and spinning tires, I posted to reddit for help and some venting. I didn't get anything accept

yeah, Jenkins sucks in modern day by comparison

Besides bias confirmation, this did not help me. I moved to Gitlab and Gitlab runner, finally trading in Gitea and the hodge podge of different infrastructures. I was reluctant to give up on Jenkins because of the time investment...but also because Jenkins is so well known. The truth is any relevant company I've spoken with or interviewed with has not had Jenkins in their stack. Or if they did it was completely damning (you would not want to work there).

Hoping Gitlab treats my infrastructure well.