By Jean Hertel, 20.12.23
For the past few years I’ve been using and hosting my own Jenkins instance so that I could run builds for adriconf in my own environment. This has the advantage that I can fully control what packages are available in the build machine without having to rely on things like Docker. It was just recently that I learned that the [Freedesktop gitlab1 instance allow you to bring your own runners, which means I didn’t need to run Jenkins anymore.
But with all those years running Jenkins, I though it would be worth to share my experience and make the question: is it worth to still run Jenkins in 2023?
The first thing to notice about Jenkins is that it’s a very barebones build system. You need plugins to do pretty much everything, from supporting git to connecting to Github/Gitlab. There are thousands of such plugins so pretty much anything you think about there will be a plugin available. The biggest drawback here is that not all plugins are properly maintained, and it’s not uncommon to see plugins being abandoned. Although there is lots of functionality provided by the plugins, since they aren’t part of the core Jenkins, many of them can be unmaintained.
The next thing you will quickly notice if you run Jenkins is the big amount of updates. There is an update almost every day. One can argue that this is a good sign as it indicates the software is alive and well maintained, but the reality is that a lot of such updates are due to security issues. If you search any CVE database you will see a lot of security issues being published about Jenkins. Those issues range from small to high severity and is not uncommon to see a high severity issue being published. In other words, if you care about security, Jenkins is quite a bad choice, specially if you plan to expose it on the internet.
One less concerning issue is the Jenkins UI: it looks very outdated. Initially this didn’t bother me much, but after some years you realize that they never update it and you are stuck with this bad UI forever. There are attempts to make this better with the BlueOcean plugin, but this UI still isn’t the default and my impression is that it’s doesn’t fully support all options available in the standard UI.
The last point I wanna make is in regards to hosting a fleet of Jenkins servers. My employer does this and, with the provision of so many hosts, you end up having to offer some kind of backup of the configured jobs. The problem here is that most of Jenkins configuration is stored as XML, which is a heavy format for both machines and humans to read, so good luck if you ever need to edit one of those by hand.
With all those things being said, one might wonder: Fine I wanna run something else, but what? Fortunately there are plenty of options for CI/CD nowadays, so one can choose between many different tools. If you wanna remain in the self-host and open source world I can recommend:
Or if you prefer to try a mix between open source and closed source, I can highly recommend BuildKite. They provide the UI as closed source, while the runners are open source and self-hostable.