Some of my personal projects are beginning to get larger and more complicated, often involving different front-ends and services that all need to be separately built and deployed. Managing all of these is taking away more of my personal time, and I’ve been on the look-out for a good CI/CD automation system for these projects. I primarily use Gitea as a git server, and have been struggling to find a system that suited my needs and works well with Gitea.
I know of Jenkins’ Gitea plugin, and other similar alternatives, but many of these tools are ones I’ve tried in the past and didn’t get on with for one reason or another.
There is also the upcoming Gitea Actions feature, which aims to provide similar functionality to GitHub’s own Actions. However this is still experimental and my early tests did not (yet) allow me to settle on this reliably.
Once Woodpecker is running, one can simply login with single sign-on (SSO) provided via the configured Gitea instance. This then allows Woodpecker to automatically fetch your repos and, when attached, create the required webhooks.
Adding repos to Woodpecker is straight forward through the web UI, and each repository can be configured with secrets (e.g. Docker credentials) and any extra settings. Setting up the build pipeline instructions themselves is as simple as creating a
.woodpecker.yml file in your project root, following the simple syntax.
I now use Woodpecker for a number of projects and services, and for a variety of tasks – including building and deploying websites/apps, Docker images, and even Flutter apps. For interest, the pipeline for this Hugo website can be viewed here.
From all the continuous development options I’ve tried, Woodpecker is certainly my current favourite, and I feel it is one that will stick. I find the UI simple and intuitive, and also blazing fast, with updates showing in real-time.
The build speeds themselves are, of course, only as quick as the underlying resources allow. Currently I run Woodpecker on a dedicated VPS with 4GB memory, and this performs fine for my needs.