Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

10 Things to Consider While Choosing a CI Platform

DZone's Guide to

10 Things to Consider While Choosing a CI Platform

Continuous integration is one of the first steps in DevOps adoption. When choosing a CI platform, keep these ten factors in mind.

· DevOps Zone
Free Resource

“Automated Testing: The Glue That Holds DevOps Together” to learn about the key role automated testing plays in a DevOps workflow, brought to you in partnership with Sauce Labs.

Continuous integration (CI) is a software development activity that requires developers to integrate all source code into a shared repository several times a day. Each commit is then verified by an automated build, allowing teams to detect defects early in the cycle. The result of a CI step is typically a unit-tested and consistent codebase.

CI is one of the first steps towards adopting DevOps, so choosing the right CI platform will get you started on the right foot. And as we know, well begun is half done!   

Here's a list of the top ten things you should evaluate while choosing a CI platform.

1. Faster Builds

A CI platform's primary goal is to provide developers with fast feedback for every code change. To demonstrate how much this matters, let's take a simple example: You have a repository that has two commits every working day, which is approximately 500 commits every year.  If the build for this repository was 5 mins faster, you would save (5*500)/(60*8) = 5.2 working days every year! Now extrapolate that across multiple repositories and you'll see that even a few minutes improvement in build time adds up to massive productivity gains!

2. Integrations

Your CI platform should integrate with all languages and third-party tools you need for your builds. Your source control system should be supported, as well as programming language(s), testing tools, packaging tools, and the package repository or deployment endpoint to which you want to push the application package. It should be easy to hook up these integrations and start working immediately. In general, look for a platform that has the maximum number of integrations, so that you are not restricted in adopting different tools in the future.

3. Free Plan

A free plan or trial period is a crucial factor while choosing a CI platform. Without a free plan, you won't know exactly how the tool works, and it's also difficult to compare with competitive products and make a decision. A smart CI platform should persuade its potential customers to try them with a free plan or an unrestricted free trial. Once people see the value of premium features, they can make an informed choice of what they really need. 

4. Quick and Easy Setup

The CI service needs to be fast and easy to onboard and use. If you find yourself asking too many questions about how to use a platform to achieve simple scenarios, it might mean the service is complicated and overkill for your needs. Look for great documentation and samples, and even more important, the ability to ask questions over live chat.

5. Container Support

Docker is becoming more popular by the day, and you should choose a CI platform with native Docker support. Even if you do not use Docker today, it's highly likely that you will try it within the next year. You should plan ahead so the CI platform doesn't become the bottleneck in moving to Docker.  

6. Testing With Multiple Runtimes, Versions, and Environments

Your CI platform should allow you to trigger multiple builds for each commit so you can make sure your application will run correctly in different scenarios. This can also help you test against an edge version of a language and find potential issues even before you officially adopt the new language version. 

7. Integrated Code Coverage and Test Results Visualization

Your CI tool already has the information it needs to display your test and code coverage results, so you shouldn't need to use coveralls and any separate for this. Code coverage and test results should be integrated into the results for every build.

8. Build-as-Code

The CI platform should support easy configuration through a universal code-based syntax like a YAML file, which can live with your source code and be versioned. UI-based configuration is unwieldy and there is usually no history of who changed what.  

9. Flexible Infrastructure Options

Your CI platform should support your infrastructure, processing, and security requirements. If your builds are resource intensive, you should have the ability to buy bigger nodes. If you're a Fintech company with strict compliance requirements or expect to move all your software development behind a firewall for any reason, you should make sure your CI provider has an enterprise version. 

Recognizing that a lot of organizations need to run behind the firewall but do not want to manage their own CI infrastructure, we offer a unique option called BYON. BYON allows you to use your own behind-the-firewall infrastructure with our hosted service, so you get the best of both worlds.

10. Customer Success

Last but not the least, ask if the organization has a customer success team and allows access to developers without too much red tape. We've all been frustrated by traditional customer support representatives who do not have a great understanding of the product or customer scenarios and offer superficial support. If an organization builds a customer success team, it indicates their willingness to take a proactive approach to all customer-focused activities, including support.  

Make sure you look for these features mentioned above before selecting your CI platform. Choosing a better CI service can help you save time and effort.

Shippable is one such tool that has all the above-mentioned features and aspects.

Learn about the importance of automated testing as part of a healthy DevOps practice, brought to you in partnership with Sauce Labs.

Topics:
devops ,continuous integration ,ci/cd

Published at DZone with permission of Pavan Belagatti, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}