A thin line between love and hate – our relationship with Jenkins

Honestly speaking, when we started Nevercode, we were convinced that we are going to replace Jenkins. We believed that Jenkins is a real pain in the ass for every reasonable mobile app development team out there. If you think about it (as long as you do have experience with Jenkins), there’s a lot of grunt work involved. For example, setting up the builders (you have to buy the hardware), configuring and updating all the plugins, maintaining the servers. Our cloud-based automated continuous integration and continuous delivery service was to replace that hassle once and for all.

We said: let’s automate as much as we can in the CI/CD pipeline, so that developers would never again have to put their hands on things they don’t actually like to do.

And the outcome is, of course, awesome. Nevercode builds apps out of the box without the need to install & configure a bunch of plugins. It detects and configures projects automatically. A team can set up the whole pipeline from building and testing to deploying using different workflows in just a few clicks. As we maintain all the servers ourselves, developers can totally forget about that part and concentrate on writing code.

We started to see many teams joining us and not even touching Jenkins. But the more we talked to people already using Jenkins, the more we realized that there was a good side to Jenkins that we just did not want to face.

Why development teams love Jenkins?

“Almost 80% of big companies are using Jenkins and they are not crazy.”

Kaushik Gopal, Fragmented Podcast

We learned that getting started with Jenkins is not that big of a deal. It takes time, but most mobile developers will successfully complete the setup and manage to install & configure plugins, such as:

  • Android SDK (incl. emulators)
  • Gradle plugin
  • Android Signing plugin
  • Google Play Publisher plugin
  • Xcode
  • Git plugin

Developers are willing to take that time because of one important factor we thought was not that important. Jenkins’ extensive plugin ecosystem features almost everything development teams might want to install thanks to the open source community. That makes it highly customizable and extremely beneficial for serious mobile app developers.

“Jenkins is like a Swiss Army knife that allows you to do anything and everything you want to do.”

Donn Felker from Fragmented Podcast

Maintenace side of Jenkins

But there were still teams turning to us saying that despite the beauty, there was one crucial factor that made them want to abandon Jenkins:

“We don’t want to go down to the basement to update the servers each time there is a new Xcode or Android SDK coming out. We hate it. It takes time and totally messes up our release process.” We heard that all the time.

Jenkins started to get costly for teams pretty fast even though it’s a free open-source service, mainly because somebody (and no one wanted to be that somebody) had to take care of a lot of housekeeping:

  • Hardware for the Jenkins instance + build nodes (OS X, Linux, Windows)
  • Keeping the OS up to date on all machines
  • Keeping Jenkins up to date + reconfiguring if needed
  • Keeping Jenkins plugins up to date + reconfiguring if needed
  • Updating Android SDKs, build tools, Gradle, etc
  • Updating Xcode, xctool, CocoaPods, etc

As Nevercode takes care of all those things, it was like a dream come true for the teams that wanted to put their resources into better use. But…

Jenkins customization with Nevercode’s automation

There were teams who said,

“Great stuff you do, team Nevercode, but we need more customization.”

The thing is that if you want to automate something for a great number of use cases, you would need to find the aspects that you can standardize. Thus, our standard packages assume teams having a homogeneous development process. We do provide customization as well, but we can never provide it at the same level as Jenkins does.

So, this looked like a love-hate relationship to us and got us thinking: What if we could turn that hate side into a love side?

What if we could also help those teams who decide to stick to Jenkins?

Well, the rest is pretty obvious. We are building a plugin that will automatically update all mobile tools in Jenkins environment. That means that mobile development teams will get Jenkins customization with Nevercode automatization.

And now, we’re inviting mobile teams using Jenkins for their CI/CD process to join the almighties who want to release defect-free apps faster — that’s our mission, by the way 🙂

Just click here and leave your email.

Of course, we will not give your email to anyone else and will only use it to contact you once we have something for you to see and try out. Thanks!

Read on: Continuous integration tools for mobile vs web. What’s the difference?