blob: 54ddcac9c5a7e27e24dce2e7fdf15b6c9ec9149e (
plain) (
tree)
|
|
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.
1. 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).
2. 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.
3. Support for multiple projects.
* This pretty much disqualifies Buildbot again.
4. 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.
5. Easy and free to self-host.
* This disqualifies all the major cloud providers, like GitHub and
GitLab.
6. Free in license and in spirit.
* This disqualifies Drone.io, which I think would be pretty nice
otherwise.
7. 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.
8. Stateless pipeline runs in containers.
* This is something that should be very easy to configure, Docker
should be first-class.
9. 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.
10. 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.
|