I've been doing a CI/CD setup revamp of late, which led to me kicking the tires of a bunch of different build/test systems. The goal was to put together a CI/CD pipeline that the entire team would feel comfortable using. My deploy target was a number of Kubernetes clusters.

With much of our services already being adapted to work with Docker and Docker Compose, we were ready to figure out which combination of systems would build and test our images.

I wish I knew how to quit you, Jenkins

We started by re-visiting our existing Jenkins install, with the aim to adapt it to play nice with our new Docker+Kubernetes setup. We were going to build and test the images on Jenkins, eventually pushing them to Google Container Registry (Google Container Engine has convenient integration and it's super cheap).

As a small engineer team, we ended up deciding against putting together and maintaining a Jenkins setup for a set of technologies that is so rapidly changing (Docker, docker-compose, Kubernetes, etc). GCR's permissions and authentication situation was also super rough.

Checking in on Docker Hub

Docker Hub became my next stop, as it served me well with emdr-relay-go in the past. While it fit the bill as an image repository exceptionally well, I found the auto-build features (the hooks into specific branches/tags) and permissions to be too limited.

While I wasn't over-the-moon about Docker Hub, it would certainly work if there weren't any better options. I kept looking, to be sure I hadn't missed anything.

What is a Quay, anyway?