Rationale
A word of warning: this was written in August 2022, when I was especially mean-spirited and upset with the existing solutions. The opinions here might come as unnecessarily harsh, and might be sometimes factually wrong.
I started this project because the existing solutions sucked. I wanted a CI system that adheres to the following criteria.
- Painless integration with git hosting providers (especially Gitea, since it's free and easy to self-host, and GitHub, since I use it the most).
- Pipeline configuration must be stored with the code.
- This disqualifies Buildbot and Concorse.
Buildbot requires pipeline configuration to be stored on the server
side, which is stupid.
There are some hacks, but they're lame.
Concorse is the same, and it's
set-pipeline
hack is even more lame.
- This disqualifies Buildbot and Concorse.
Buildbot requires pipeline configuration to be stored on the server
side, which is stupid.
There are some hacks, but they're lame.
Concorse is the same, and it's
- Support for multiple projects.
- This pretty much disqualifies Buildbot again.
- Easy configuration and set up.
- This disqualifies Jenkins, Buildbot and Concorse. I've been working as a software developer for 10 years, and I can recognize when something's over-engineered and over-complicated.
- Easy and free to self-host.
- This disqualifies all the major cloud providers, like GitHub and GitLab.
- Free in license and in spirit.
- This disqualifies Drone.io, which I think would be pretty nice otherwise.
- Not yet another custom file format.
- I'm a bit tired of converting pipelines from .travis.yml to .github/workflows/ci.yml to Jenkinsfile and vice versa. Shell scripts all the way.
- Stateless pipeline runs in containers.
- This is something that should be very easy to configure, Docker should be first-class.
- You must be able to run pipelines locally to test your changes.
- Pretty much none of the solutions (maybe only Concorse) make this an option.
- The UI shouldn't look like shit.
- Woodpecker, you're out.
Pretty much I would like something like Drone.io, but free in spirit and in license, and without a custom YAML format.