The way we think about development and CI/CD solutions started with Waterfall – sequential, solid, conservative – moved to Agile, whose origins can be traced back to a somewhat romantic story at a ski resort in Utah, and is now heavily influenced by DevOps.
This progression, from a stage-by-stage process that often meant reaching the “end” of a project only to begin the herculean task of debugging, then to a world of Scrums and sprints, and finally to a full DevOps culture, has led to the adoption of Continuous Integration.
What is CI?
This new approach is consistent with the values of collaboration, quicker release cycles, and the integrated disciplines of development, QA, and Operations.
Continuous Integration solutions (related to Continuous Delivery and Continuous Deployment) is a development practice where developers integrate code into a shared repository regularly, often several times a day. These check-ins are verified by an automated build, which allows teams to detect problems early.
Through this regular approach, errors can be detected quickly, located more easily, last-minute pre-release chaos is averted, the most current build is always available, feedback on changes is immediate – with all of this saving time, money, and other resources, and contributing to a more efficient organizational culture.
While there are caveats; the CI approach may not be efficient for smaller projects, the automated test suite may require a significant cost/time investment, and larger teams may encounter queueing issues, overall this method is seen by many as the most valuable of all the software development practices today.
We’ll look at 2 popular CI platforms, to help decision makers when it comes time to choose the right one for different projects or organizations.
Travis CI
Travis CI is a hosted distributed continuous integration service used to build and test software, and is known for its easy integrations and quick setup.
Originally designed for open source projects (and still free for these), Travis CI has now expanded to closed source projects.
Travis bills itself as “The simplest way to test and deploy your projects”. This is not far from the truth, as using Travis CI can be as easy as logging in with GitHub, instructing Travis CI to test a project, and then pushing to GitHub.
When you run a build, Travis CI clones your GitHub repository into a new virtual environment. It then carries out a series of tasks to build, and then test, your code. If none of these tasks fail, the build is considered passed (well done!), and Travis CI is able to deploy your code. If one of these tasks fails, the build is considered broken.
You can have Travis watch tests as they run and easily integrate with tools like Slack to keep your team up-to-date with any build issues.
More details about builds, jobs, stages, and phases can be found in the documentation depository. The Travis CI documentation is generally excellent, providing guidance and advice to experts and novices alike.
Travis CI supports most programming languages, including Android, C, C#, C++, Clojure, Crystal, Dart, Erlang, Elixir, Go, Groovy, Haskell, Haxe, Java, JavaScript (with Node.js), PHP, Python, Ruby, Scala and Visual Basic.
Complaints from users about Travis CI often refer to clunky UI, slowness at times, and the relatively steep pricing for the paid version.
In terms of Circleci pricing, the first 100 builds are free, no matter what plan you’re on. As mentioned, open source projects are always free, and closed source projects are billed based on the number of concurrent jobs, from the Bootstrap package at $69 per month (1 concurrent job), to the Premium package at $489 a month (10 concurrent jobs). All packages come with unlimited build minutes, unlimited repositories and unlimited collaborators.
There is also an enterprise option, an on-premises product for companies wanting the regular features of Travis CI, but with additional on-site security needs.
CircleCI
Like Travis, CircleCI is a continuous integration and delivery platform that automates the software development process and is used by the likes of Facebook, Kickstarter, and Spotify.
CircleCI integrates with GitHub, GitHub Enterprise, and Bitbucket, creating a build every time you commit code It then automatically tests your build in a clean container or virtual machine, notifying you of build fails that issues can be addressed as quickly as possible. Once a build has passed, it is deployed to various environments.
Other integrations include Fastlane, Azure, Jira, Slack, and many others depending on an organization’s specific needs, and is known for its Docker support.
CircleCI can be hosted on the cloud or run behind a firewall on an organization’s private infrastructure. Any language that builds on Linux or macOS is supported, including C++, Javascript, .NET, PHP, Python, and Ruby. CircleCI also emphasizes their security credentials, including LDAP for user management, full-level virtual machine isolation, and audit logging.
In terms of user feedback, many users prefer the config set up in Travis, a confusing dashboard, and there have been complaints of slowness but this is probably project-dependent.
Pricing is offered as a cloud plan or a server plan. On the cloud plan, Linux is billed per container, with the first container being free, and each additional container is costing $50 a month. For macOS, pricing is calculated based on concurrency and build minutes and starts at $39 a month. The server plan is priced at $35 per user per month, with a 10 user minimum.
Comparison
Choosing the right tool will depend on factors such as your chosen programming language and application architecture, your team’s skills, experience and preferences, and your roadmap in terms of growth and scaling.
CircleCI has a whole page dedicated to its advantages over Travis CI, and while many points are valid, there are some Travis CI advantages that are not presented.
Right now, Travis CI seems to have the edge when it comes to open-source or smaller projects, while CircleCI is generally seen to be the better option for larger teams and projects. Both, however, have been successfully used in large and small projects, and in this case, the desired option will probably come down to personal preference.
CI/CD pipelines have become a cornerstone of agile development, streamlining the software development life cycle. They allow for frequent code integration, fast testing and deployment. Having…
Continuous Integration/Continuous Delivery (CI/CD) has now become the de-facto standard for all engineering teams seeking to keep pace with the demands of the modern economy. At…
Continuous integration (CI) and continuous delivery or deployment (CD) cover the process of automatically merging, building, and testing code changes ready for release, and – in…