Jenkins: yet another list of curated plug-ins

Jenkins is a Continuous Integration software, along the lines of BuildBot and Travis CI.

Continuous Integration software

For starters, here is a small comparison of these:

  • Jenkins is written in Java and released as a single .war binary. It is a full-featured server, and contains lots of features out-of-the-box, such as user accounts / credentials (login with username and password), security, plug-in management, could be potentially used for both single projects or as a single instance for lots of projects, although the first scenario seems to be the most common among its users [citation needed].
  • BuildBot is written in Python and at the time of this post 0.9.6 is its latest released version. As Jenkins, it is suited for both single projects or as a shared instance for lots of projects. However, if you happen to bother to set it up, it is better to use it for lots of projects, since it has a learning curve which is bigger than Jenkins, and also because it is slightly less automatic and requires manual installation -- you could say Arch Linux is to BuildBot what Ubuntu is to Jenkins.
  • Travis CI is probably more well-known among Github users. It is definitely used for single projects only; each travis project maps to one and only one Github repository. Its elegance lies in the fact all the configuration is written in a single .travis.yml file that lives inside the repository. These days its builds are done inside docker containers, which makes them idempotent (repeatable) and isolated from each other.

All of the 3 projects are good and solid; buildbot and jenkins are the oldest, and jenkins is the most popular (or at least used to be; these days, travis is getting more and more popularity through GitHub; and, well, GitHub is becoming more and more synonym with open source software, the same way 'Googling' became a buzz word for 'searching'). Buildbot recently got a rewrite (from its 0.8 to its 0.9 version) which made it slightly more buggy (its project has lots of issues on GitHub); hopefully this is temporary, however the reader is advised to proceed with caution if they [1] choose buildbot.


Now here comes the best part. Jenkins is really stable and mature; however, it is like Emacs: it totally sucks without customization through plug-ins / add-ons. Vanilla / plain Jenkins seems to be something from the 2000s. That's why this post is here!

I've been spending the last days testing lots of Jenkins plug-ins that make it suck less. This is a small curated list of plug-ins that I believe to make a Jenkins installation more pleasant to work with and, even more important, more maintainable and reliable.

Don't blindly install these plug-ins just because I told you they are good. Read them, assess the real need for them, see if they are necessary in your use case.

Anyways, I recommend the ones marked as better design and essential.

[1] they as a wrapper for both he and she. These days (and every now and then) the English languague is getting lots of small tractions to modernize it.
[2] Some people will say this won't happen if you are hosting your Jenkins instance in the cloud. You can accept this argument, it is fair enough.


Comments powered by Disqus