Overall Satisfaction with Jenkins
Jenkins is used extensively in our engineering department. It's used to automate builds for Go, NodeJS, .NET, iOS, and Android projects. It greatly reduces the amount of time needed to compile updates, and allows us to share build scripts across repositories for setting up new jobs quickly.
- Jenkins abstracts the build/compile process, so that a local development machine doesn't need to constantly be updated or contain all of the libraries/packages required for more extensive builds.
- Jenkins allows extremely customized and parameterized builds, allowing non-technical coworkers to initiate builds and set their own parameters.
- Jenkins has a large collection of plugins that can retrieve and send build data/artifacts to/from various services, and can also hook into many popular apps like Slack and Hipchat.
- The user interface of Jenkins (2.0 and prior) still leaves a bit to be desired. Many of the options and configurations options are not where you would expect when first starting to learn Jenkins.
- Jenkins tends to require a bit more overhead than I would like in terms of RAM and dependencies.
- Some Jenkins plugins can break Jenkins in unexpected ways, without Jenkins gracefully handling errors. This is one area that could be greatly improved, with minimal effort.
- Jenkins has saved us countless hours, and allows us to launch additional jenkins servers as needed for larger jobs/teams.
- Since Jenkins is free, it has no negative impact on budgeting, and is simple enough that any lost time due to training is negligible compared to the time saved.
- Apache Maven and Buildbot
I greatly prefer Jenkins to other build systems like Maven and Ant, due to its incredible flexibility.