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, logging...it 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.

Plug-ins

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

Comments powered by Disqus