Nice improvement from Woodpecker CI Update

A few months ago, I wrote about my CI setup for my Smokeweb project, and how I had to take a few workarounds to make it work. And recently, Woodpecker release v3.16.0 fixed a couple of the issues I had. 馃帀 If you recall, my main issue was that I couldn鈥檛 use Woodpecker鈥檚 Service feature. That was due to the fact that I鈥檓 using a Ceph RBD StorageClass to provide the pipeline volumes. And those are RWO by nature, meaning they can only be mounted on a single node of my k8s cluster. This, ultimately, meant that if the service for running my test Postgres instance got scheduled on a different node than all of the pipeline steps, there would be a deadlock. The steps won鈥檛 be able to start because the pipeline volume is already mounted on the node the Service is running on. ...

July 14, 2026 路 3 min 路 Michael
A picture with the logos of three projects: The Golang gopher, the PostgreSQL elephant and the WoodpeckerCI woodpecker. The Golang gopher is pretty goofy looking, showing two large front teeth in a small mouth, tiny ears and two large eyes. The Postgres elephant is a stylized front view of an elephant, including tusks and a large trunk. finally, the WoodpeckerCI woodpecker is more of an outline of the namesake bird.

Smokeweb: Setting up Database Connections

After implementing a lot of helpers and basic infrastructure for my Smokeweb app (see here if you鈥檙e interested in what the project is about), I finally arrived at creating the database connection. In this post, I will give an overview of the Golang test helpers I implemented for tests which need a database, show you how I implemented some scripting for a Postgres database using Podman and then I will tell you how I implemented database tests in WoodpeckerCI. ...

May 1, 2026 路 18 min 路 Michael

Smokeweb: Setting up a CI with Go Caches in Woodpecker

In my $dayjob, I鈥檓 a build engineer in the CI team of a large company. So I鈥檓 reasonably confident that this is going to be only the first post in a long series on the CI setup for my Smoking project. I like CIs and the automated testing they come with. I think it was one of the better ideas the tech industry has come up with. I鈥檓 seeing its benefit every day at work. So I also have CIs for most of my private projects. ...

March 18, 2026 路 6 min 路 Michael

Improving Multi-Arch Image Build Performance by not Emulating

Wherein I update my container image build pipeline in Woodpecker with buildah. A couple of weekends ago, I naively thought: Hey, how about stepping away from my Tinkerbell experiments for a weekend and quickly setting up a Bookwyrm instance? As such things tend to turn out, that rookie move turned into a rather deep rabbit hole, mostly on account of my container image build pipeline not really being up to snuff. The current setup Before going into details on the problem and ultimate solution, I鈥檇 like to sketch out my setup. For a detailed view, have a look at this post. ...

August 16, 2025 路 20 min 路 Michael
The HashiCorp Nomad and Kubernetes logos, connected with an arrow pointing from Nomad to Kubernetes

Nomad to k8s, Part 15: Migrating my CI

Wherein I migrate my Drone CI setup on Nomad to a Woodpecker CI setup on k8s. This is part 16 of my k8s migration series. Finally, another migration blog post! I鈥檓 still rather happy that I鈥檓 getting into it again. For several years now, I鈥檝e been running a CI setup to automate a number of tasks related to some personal projects. CI stands for Continuous Integration, and Wikipedia says this about it: ...

January 26, 2025 路 27 min 路 Michael