I have used both Jenkins and Travis CI professionally. Both tools will do the job but there are some distinct differences between them. I believe that you can get the job done with either one of them and the purpose of this post isn’t to pick one or the other. I think they bot viable tools and depending on the situation one may be better than the other.
Travis is free for open source projects. However it will cost you if your project is private. The cost starts at $129 per month and goes up from there. The cost isn’t that bad if you have many projects that you want to host and don’t have your own server to host them. They charge you a service fee not a per project fee. The price for Jenkins is free if you set it up on your own server. You can use it both for open source and private projects. There is also Jenkins hosting available if you are unable to configure the server yourself. That would come at a cost though.
Travis is maintenance free because it’s being hosted for you. They handle all of the server updates. All you have to do is maintain a configuration file. The configuration file is basically the toolset you are using. For example the Ruby version or PHP version you are using. Jenkins requires little maintenance and has a built in GUI tool. The purpose of the tool is to allow for easy updates. If you are hosting on your own server you will have to maintain that server to. Maintaining a server is a little work but not a ton of effort required for that either. Basically just updates from the operating system.
Travis has a very fast setup time. All you need to do is create a configuration file. This takes little effort to get going. Jenkins has a little bit of setup time ranging from a couple of hours to a couple of days. This depends on the types of projects you are setting up. There is a lot of documentation out there to setup a Jenkins server to. This is available in languages such as PHP, Ruby on Rails and Android. From my personal experience I have found that setting it up is pretty straight forward. Also once it’s complete it’s very simple to maintain.
My opinion is that either of these continue integration servers will do the job. It really depends on if you would rather spend the time upfront setting it up or just pay a monthly fee. If your project is open source Travis would be the best option in my opinion because there is no setup time and no fee. If your project is private Jenkins would be the best option in my opinion because the setup time is minimal and maintaining the server is pretty simple. I think either one you use would work. It just depends on personal preference and the situation your project is in. I use both currently and love both for different reason.
Great post! The company I’m working for is currently using Strider CI, but I’m researching different options. I’ve come down to the same conclusion you have, but can’t come to an obvious conclusion for which tool would be better for our project. It’s just as you said: Travis is easy to set up and has no server maintenance, but costs money. Jenkins is plugin rich and free (other than server costs).
The problems I’m trying to fix by switching to a new tool is
– More reliability (no server issues or tedious intermittent build issues)
– Awesome debug output
– Reasonable setup time
– Simplicity (a feature team should be able to setup basic CI in an hour or two)
– Maintain the flexibility to customize whatever we want (easy shell script and cmd execution)
Right now I’m actually leaning toward Travis because of it’s simplicity, but it doesn’t seem to have any readily available tools for clean test output, where Jenkins has several test result dashboard plugins.
Given my goals, and your gut instinct, which would you choose and why? Have you found one to be any more enjoyable to work with than the other? Has either proven to be more reliable?
Let me know. Thanks in advance!
I have been using Travis for over a year now. I still feel like’s it’s the easiest to setup. However we have ran into issues with consistency in our runs. It seems like during the day Travis runs slower and causes some tests to fail. I also still use Jenkins for personal projects and find it easy to maintain and great plugin support. After you set it up your done and you manage it. So if it’s slow you can upgrade the memory yourself. So I suppose it really depends on what you want. A simple solution but does have a cost associated I would go with Travis. An inexpensive solution that you have to setup I would go with Jenkins. I think setting up Jenkins is pretty simple too.
I am started to use Travis-CI for my opensource github projects and Jenkins internally. Lately I am trying out the Jenkins Pipeline support which allows you to create hella complex workflows by code rather than by configuration much like Travis except much more powerful.
Unfortunately, when I did the pipeline support I noticed that it just made things very complicated and generally single use only. Sort of like Ant vs Maven. I would rather describe my project as high level requirements (like Travis’ configuration file) rather than actually writing step by step instructions.
However, depending on the needs of the organization, Jenkins with pipeline is the more flexible one than Travis, but the skill set to start and retain is a lot higher.
Pretty straightforward post. Thanks.