10 Things to Consider While Choosing a CI Platform

- By Pavan Belagatti on June 12, 2017

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 10 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 you want to push the application package to. 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 adoping different tools in the future.
Our integrations page shows the tools and technologies we integrate with, so look for a similar comprehensive listing.  
3.  Free plan: 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 be fast and easy to onboard to 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.
Check out our support fortest and code coverage visualizations, including JaCoCo.
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 enteprise 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. Read what the Bang&Olufsen team has to say about this feature!
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 pro-active 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. 

Topics: continuous integration (CI), devops, CI/CD