📜 ⬆️ ⬇️

Continuous Integration: CircleCI vs Travis CI vs Jenkins



Under the cut, you will find a translation of an introductory article that compares three systems of continuous integration: CircleCI, Travis CI and Jenkins.


Definition and purpose of CI


Continuous Integration (CI, Continuous Integration) is a software development practice in which code changes with high frequency are integrated into a common repository and verified using automated build.


Continuous integration is aimed at accelerating and facilitating the process of identifying problems encountered in the process of software development. With regular integration of changes, the one-time scope of checks is reduced. As a result, debugging takes less time, which can be redistributed to add new features. It is also possible to add a check of code style, cyclomatic complexity (the lower the complexity, the easier it is to test) and other types of controls. This simplifies code review, saves time and improves code quality.


How it works





CircleCI vs Travis CI vs Jenkins


I hope that now the process of continuous integration is generally understood, and we can move on to comparing several currently popular CI platforms, each of which has its own advantages and disadvantages. Let's start with CircleCI.


CircleCI



')

Functions:



CircleCI is compatible with:



Advantages of CircleCI:



CircleCI Disadvantages:



Also, despite the fact that cloud systems have undoubted advantages, you need to be prepared for the fact that at any moment the function you need can be removed, and you cannot do anything about it.


Travis ci




Travis CI and CircleCI are very similar.


Both systems:



What is in TravisCI and not in CircleCI?



Build matrix


language: python python: - "2.7" - "3.4" - "3.5" env: - DJANGO='django>=1.8,<1.9' - DJANGO='django>=1.9,<1.10' - DJANGO='django>=1.10,<1.11' - DJANGO='https://github.com/django/django/archive/master.tar.gz' matrix: allow_failures: - env: DJANGO='https://github.com/django/django/archive/master.tar.gz' 

Build matrix is ​​a tool that allows you to perform tests using different versions of languages ​​and packages. It has rich customization capabilities. For example, if unsuccessful builds in some environments, the system may issue a warning, but the entire assembly will not be considered unsuccessful (this is convenient when using dev-versions of packages).


TOX


If you prefer any other CI platform, you can create a Build Matrix using Tox.


 [tox] envlist = py{27,34,35}-django{18,19,110,master} [testenv] deps = py{27,34,35}: -rrequirements/test.txt django18: Django>=1.8,<1.9 django19: Django>=1.9,<1.10 django110: Django>=1.10,<1.11 djangomaster: https://github.com/django/django/archive/master.tar.gz commands = ./runtests.py [testenv:py27-djangomaster] ignore_outcome = True 

Tox is a versatile console tool for managing packages and testing them in virtualenv. It can be installed using pip install tox or easy_install tox .


Advantages of Travis CI:



Disadvantages of Travis CI:



Jenkins




Opportunities:



Jenkins advantages:



Disadvantages of Jenkins:



Conclusion


What system CI to choose? It depends on your needs and the intended use of this tool.


CircleCI is well suited for small projects where the main task is to launch continuous integration as quickly as possible.


Travis CI is recommended primarily for open-source projects that need to be tested in various environments.


I would advise Jenkins for large projects that require serious system configuration when working on them (in the case of Jenkins, this is done using plug-ins). In Jenkins, you can change almost anything, but it will take time. If you want to quickly run the CI chain, Jenkins may not be suitable.


References:


  1. Original: Continuous Integration. CircleCI vs Travis CI vs Jenkins .

Source: https://habr.com/ru/post/332836/


All Articles