Friday, 5 July 2019

Continuous Integration - Jenkins vs Travis-CI

What is CI?

Continuous integration is a software development method where members of the team can integrate their work at least once in a day. In this method, every integration is checked by an automated build to search the error. The CI concept was first introduced over two decades ago to avoid "integration hell," which happens when integration is put off till the end of a project.
In this tutorial, you will learn
  • What is CI?
  • What is Travis CI?
  • What is Jenkins?
  • What does Travis do?
  • What did Jenkin do?
  • Travis CI Features:
  • Jenkin Features:
  • Travis vs. Jenkins
  • Popularity Index
  • Which is better?
How CI works?
  • Developers write code and commit changes to the shared repository
  • After that, the CI server monitors the repository and evaluates all the changes
  • CI builds the system and conduct integration and unit tests
  • The server releases deployable artifacts
  • The Continous integration server assigns a build tag to the version and building code
  • Then the CI server reports the team about the successful build. If the tests fail, the server alerts about the event to the development team. The team will fix the issues as fast as is possible.

What is Travis CI?

Travis CI was the first CI as a Service tool. It introduced a new approach to building code in the cloud. This CI tool allows the user to sign up, link their repository, build, as well as test their apps.
Travis CI tool can easily integrate with the common cloud repositories like GitHub and Bitbucket. It offers many automated CI options which cut out the need for a dedicated server as the Travis CI server is hosted in the cloud. This allows you to test in different environments, on various machines, running on different Operating Systems.
Travis CI is free for open source projects. For commercial projects, you need to purchase an enterprise plan.

What is Jenkins?

Jenkins is an award-winning continuous integration tool that monitors executions of deployment cycles. It started as a side project by Sun's software engineers group. Later it was expanded as one of the popular open source CI tools which help software development teams to automate their deployments.
Jenkins is a Java-based tool, which means you only need Java Runtime Environment to operate it. Hence, Jenkins can be installed on any operating system where Java runs.
In this tool, Developers can also specify conditions for customized builds. Jenkins supports a massive plugin archive. This allows developers to alter how Jenkin looks and operates.
Moreover, the Jenkins Pipeline suite of plugins comes with special tools that allow developers to model easy-to-complex delivery pipelines using DSL ( Digital Subscribe line) method.

What does Travis do?

Travis CI offers following benefits:
  • You can monitor GitHub projects
  • Runs Test and generate results quickly. Parallel test execution is possible.
  • Build artifacts & check code quality
  • Easy Deployment to cloud services
  • It can identify small as well as large code changes.
  • Developers can use Travis CI to watch the tests when they are running.
  • The tool integrates with Slack, HipChat, Email, etc.

What does Jenkin do?

Jenkins allows you to automate your build, test, and deploy tasks. The tool provides support for different OS like Windows, Mac OSX, and Linux systems.
Moreover, Jenkins gives you an ability to quickly build and test your code to get early feedback on whether it's ready for production or not. In most cases, Jenkin will require few modifications according to your team's custom requirements.

Travis CI Features:

  • Automatic integration with GitHub
  • Repository access to build pull requests
  • Support for 21 languages like Android, C, C#, C++, Java, JavaScript (with Node.js), Perl, PHP, Python, R, Ruby, etc
  • Pre-installed build & test tools
  • Available services - databases, message queues, etc.
  • Deployment to multiple cloud services
  • Encrypt secure environment variables or files
  • Virtual machines recreated after every build
  • CLI client and API for scripting
  • Comes with free cloud-based hosting which does not require maintenance or administration.

Jenkin Features:

  • Easy to install, upgrade, and configure
  • Distributed Builds
  • Monitoring external jobs
  • More than 600 plugins to customize your Jenkins environment
  • Over 1000+ public repositories on Github, 500+ contributors, strong commit activity
  • Support for various authentication methods, version control systems, notification, etc.
  • Jenkins provides remote access API and its functionalities.
  • Provide Powerful CI/CD tool for big projects
  • It supports various job models like Freestyle, Pipeline, etc.,
  • Allows developers to add their extensions
  • Compatible with Docker, Libvirt, Kubernetes, and many other programs

Travis vs. Jenkins

ParameterJenkinTravis
CostJenkins is free. But development team need to run and maintain their dedicated server. This could be considered an extra expense.Travis CI enterprise suites start at $129 per month. Cost increase based on the level of support you require.
Set up TimeJenkins needs elaborate setup. So you'll have a very long wait time for the complete installation.It takes very less time to get started. Create a config file and start integrating.
PerformanceIf you're looking for a CI tool with unlimited customization options, then Jenkins is the best choice for you.Travis CI is the best choice If you are working in an open source project.
Tool TypeIt is an open-source free to use the tool.It is a commercial CI Tool
UsageEasy to useFlexible to use
GithubGood for GithubExcellent for Github
SupportExtensive support from the community.Limited support for the community.
Pros
  • Customization is biggest benefit of the Jenkins CI server
  • An extensive plugin archive can be configured to change the look of Jenkins.
  • You can also add new functionality like authentication, alerts, and credentials.
  • Integration with GitHub & cloud
  • Unlimited open source projects with full functionality
  • Extensive project configuration via .travis.ymi file
  • Allows cluster tests and run them in parallel
  • Multiple build environments and target platforms (i.e. Node 0.10,0.8,0.6, Li on).
Cons
  • One major drawback of Jenkins for continuous integration is that it is highly configurable. There is no out-of-the-box setup. That's why it may take two-three hours to days to get everything configured in the system.
  • The biggest cons of installing Travis CI is that it's Commercial plans start at $129/m which is quite expensive.
  • Not suitable for high-security projects
  • Unlike other CI tools, it does not offer Bitbucket Support.
Usage PlansFreeFree for open source projects. However, Paid for Enterprise.
Server MachineServer-basedCloud-based
Customization OptionsMoreLess
ConfigurationFully customizableYAML
Control on systemFullVery less

Popularity Index

The number of questions labeled Jenkins and Travis in Stack Overflow.

Which is better?

Thus, with the above discussion, we can get ay that Travis and Jenkins both offer wonderful features. However, small open source projects are best suited for Travis CI as it is easy to run and quick to set up. On the other hand, large enterprise is best suited to Jenkins as it offers free licensing for a private project and a wide range of customizable feature. So, we can say that both of these continuous integration tools are good in their way.

No comments:

Post a Comment