What is CircleCI and what are its top alternatives?
Top Alternatives to CircleCI
- Jenkins
In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project. ...
- Travis CI
Free for open source projects, our CI environment provides multiple runtimes (e.g. Node.js or PHP versions), data stores and so on. Because of this, hosting your project on travis-ci.com means you can effortlessly test your library or applications against multiple runtimes and data stores without even having all of them installed locally. ...
- Codeship
Codeship runs your automated tests and configured deployment when you push to your repository. It takes care of managing and scaling the infrastructure so that you are able to test and release more frequently and get faster feedback for building the product your users need. ...
- Azure DevOps
Azure DevOps provides unlimited private Git hosting, cloud build for continuous integration, agile planning, and release management for continuous delivery to the cloud and on-premises. Includes broad IDE support. ...
- Concourse
Concourse's principles reduce the risk of switching to and from Concourse, by encouraging practices that decouple your project from your CI's little details, and keeping all configuration in declarative files that can be checked into version control. ...
- CloudBees
Enables organizations to build, test and deploy applications to production, utilizing continuous delivery practices. They are focused solely on Jenkins as a tool for continuous delivery both on-premises and in the cloud. ...
- Bamboo
Focus on coding and count on Bamboo as your CI and build server! Create multi-stage build plans, set up triggers to start builds upon commits, and assign agents to your critical builds and deployments. ...
- AWS CodeBuild
AWS CodeBuild is a fully managed build service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don’t need to provision, manage, and scale your own build servers. ...
CircleCI alternatives & related posts
- Hosted internally523
- Free open source469
- Great to build, deploy or launch anything async318
- Tons of integrations243
- Rich set of plugins with good documentation211
- Has support for build pipelines111
- Easy setup68
- It is open-source66
- Workflow plugin53
- Configuration as code13
- Very powerful tool12
- Many Plugins11
- Continuous Integration10
- Great flexibility10
- Git and Maven integration is better9
- 100% free and open source8
- Github integration7
- Slack Integration (plugin)7
- Easy customisation6
- Self-hosted GitLab Integration (plugin)6
- Docker support5
- Pipeline API5
- Fast builds4
- Platform idnependency4
- Hosted Externally4
- Excellent docker integration4
- It`w worked3
- Customizable3
- Can be run as a Docker container3
- It's Everywhere3
- JOBDSL3
- AWS Integration3
- Easily extendable with seamless integration2
- PHP Support2
- Build PR Branch Only2
- NodeJS Support2
- Ruby/Rails Support2
- Universal controller2
- Loose Coupling2
- Workarounds needed for basic requirements13
- Groovy with cumbersome syntax10
- Plugins compatibility issues8
- Lack of support7
- Limited abilities with declarative pipelines7
- No YAML syntax5
- Too tied to plugins versions4
related Jenkins posts
Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).
It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up
or vagrant reload
we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.
I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up
, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.
We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.
If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with TeamCity). It also comes with all the common-handy plugins like Slack or Apache Maven integration.
The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual Vault instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. TeamCity shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific Git branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).
Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common Docker and CircleCI setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and LXC. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for Amazon EC2 (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.
Releasing new versions of our services is done by Travis CI. Travis first runs our test suite. Once it passes, it publishes a new release binary to GitHub.
Common tasks such as installing dependencies for the Go project, or building a binary are automated using plain old Makefiles. (We know, crazy old school, right?) Our binaries are compressed using UPX.
Travis has come a long way over the past years. I used to prefer Jenkins in some cases since it was easier to debug broken builds. With the addition of the aptly named “debug build” button, Travis is now the clear winner. It’s easy to use and free for open source, with no need to maintain anything.
#ContinuousIntegration #CodeCollaborationVersionControl
Travis CI
- Github integration506
- Free for open source388
- Easy to get started271
- Nice interface191
- Automatic deployment162
- Tutorials for each programming language72
- Friendly folks40
- Support for multiple ruby versions29
- Osx support28
- Easy handling of secret keys24
- Fast builds6
- Support for students4
- The best tool for Open Source CI3
- Hosted3
- Build Matrices3
- Github Pull Request build2
- Straightforward Github/Coveralls integration2
- Easy of Usage2
- Integrates with everything2
- Caching resolved artifacts1
- Docker support1
- Great Documentation1
- Build matrix1
- No-brainer for CI1
- Debug build workflow1
- Ubuntu trusty is not supported1
- Free for students1
- Configuration saved with project repository1
- Multi-threaded run1
- Hipchat Integration1
- Perfect0
- Can't be hosted insternally8
- Feature lacking3
- Unstable3
- Incomplete documentation for all platforms2
related Travis CI posts
Releasing new versions of our services is done by Travis CI. Travis first runs our test suite. Once it passes, it publishes a new release binary to GitHub.
Common tasks such as installing dependencies for the Go project, or building a binary are automated using plain old Makefiles. (We know, crazy old school, right?) Our binaries are compressed using UPX.
Travis has come a long way over the past years. I used to prefer Jenkins in some cases since it was easier to debug broken builds. With the addition of the aptly named “debug build” button, Travis is now the clear winner. It’s easy to use and free for open source, with no need to maintain anything.
#ContinuousIntegration #CodeCollaborationVersionControl
We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.
To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas
To build #Webapps we decided to use Angular 2 with RxJS
#Devops - GitHub , Travis CI , Terraform , Docker , Serverless
- Simple deployments215
- Easy setup179
- Github integration159
- Continuous deployment147
- Bitbucket integration110
- Easy ui97
- Slack integration84
- Fast builds66
- Great ui61
- Great customer support61
- SSH debug access28
- Free plan for 5 private repositories27
- Easy to get started27
- Competitively priced23
- Notifications20
- Hipchat, Campfire integrations20
- Awesome UI16
- Fast15
- Great documentation14
- Great experience13
- Free for open source12
- Great Tutorials10
- GitLab integration4
- Free4
- Easy to use, above all and its free for basic use4
- Easy for CI first timers3
- BitBucket Support3
- Very easy to get started3
- Build private Github repos on the free plan3
- Awesome3
- Super easy setup, works great with py.test/tox2
- Openshift integration2
- Great support, even on free tier2
- AppEngine integration2
- Easy debugging with ssh2
- Integrates with other free software2
- Superfast team work integration2
- Grepping Codeship = 1 day. Grepping Bamboo = 1 month2
- Easy to set up, very nice GitHub integration2
- Up and running in few minutes, and above all UI2
- Ui could use some polishing3
- Antiquated ui0
- Difficult to answer build questions0
related Codeship posts
We are using GitLab CI and were very happy with it. The integration of all tools like CI/CD, tickets, etc makes it very easy to stay on top of things. But be aware, Gitlab currently does not have iOS build support. So if you want to exchange that for CircleCI / Codeship to have to invest some effort. We are using a managed Mac OS device and installed the Gitlab runner there, to have iOS builds.
Azure DevOps
- Complete and powerful56
- Huge extension ecosystem32
- Azure integration27
- Flexible and powerful26
- One Stop Shop For Build server, Project Mgt, CDCI26
- Everything I need. Simple and intuitive UI15
- Support Open Source13
- Integrations8
- GitHub Integration7
- Cost free for Stakeholders6
- One 4 all6
- Crap6
- Project Mgmt Features6
- Runs in the cloud5
- Agent On-Premise(Linux - Windows)3
- Aws integration2
- Link Test Cases to Stories2
- Jenkins Integration2
- GCP Integration1
- Still dependant on C# for agents8
- Half Baked5
- Many in devops disregard MS altogether5
- Not a requirements management tool4
- Jack of all trades, master of none4
- Capacity across cross functional teams not visibile4
- Poor Jenkins integration3
- Tedious for test plan/case creation2
- Switching accounts is impossible1
related Azure DevOps posts
Visual Studio Azure DevOps Azure Functions Azure Websites #Azure #AzureKeyVault #AzureAD #AzureApps
#Azure Cloud Since Amazon is potentially our competitor then we need a different cloud vendor, also our programmers are microsoft oriented so the choose were obviously #Azure for us.
Azure DevOps Because we need to be able to develop a neww pipeline into Azure environment ina few minutes.
Azure Kubernetes Service We already in #Azure , also need to use K8s , so let's use AKS as it's a manged Kubernetes in the #Azure
I use Azure DevOps because for me it gradually walk me from private Git repositories to simplest free option for CI/CD pipelines at the time. I spend 0$ initially to manager CI/CD for my small private projects. No need to go into two different places to setup integration, once I have git repository, I could deploy projects. Right now this is not the case since CI/CD is default for me, so I use it now from memories of old good days. I'm not yet need complexity on the projects, so I don't even consider other options with "more choices". I carefully limit my set of options during development, that's why Azure DevOps (VSTS)
- Real pipelines16
- Containerised builds10
- Flexible engine9
- Fast6
- Open source4
- No Snowflakes3
- Simple configuration management3
- You have to do everything2
- Fancy Visualization1
- Fail forward instead of rollback pattern2
related Concourse posts
We use Docker for our #DeploymentWorkflow along with Concourse for build pipelines and Ansible for deployment together with Vault to manage secrets.
I wanna develop a video processing pipeline for an open source organization the pipeline consists of fixing video meta-data, transcoding, uploading to CDN, and uploading to YouTube. What do you guys think is a better way to do this, Kubernetes or Concourse?
- Jenkins6
related CloudBees posts
- Integrates with other Atlassian tools10
- Great notification scheme4
- Great UI2
- Has Deployment Projects1
- Expensive6
- Low community support1
- Bad UI1
- Bad integration with docker1
related Bamboo posts
I am choosing a DevOps toolset for my team. GitLab is open source and quite cloud-native. Jenkins has a very popular environment system but old-style technicals. Bamboo is very nice but integrated only with Atlassian products.
Need for CI/CD as part of data testing team.
Please suggest.
Currently, Bamboo is most commonly used in the company while GitLab is rated highly by the internal team.
- Pay per minute7
- Parameter Store integration for passing secrets5
- Integrated with AWS4
- Streaming logs to Amazon CloudWatch3
- Bit bucket integration3
- GitHub Webhooks support2
- AWS Config and Config rule integration for compliance2
- VPC PrivateLinks to invoke service without internet2
- Windows/.NET support1
- Jenkins plugin integration1
- Ondemand scaling of build jobs1
- Scheduled builds with CloudWatch Events integration1
- Local build debug support1
- Native support for accessing Amazon VPC resources1
- Docker based build environment1
- Support for bringing custom Docker images1
- Fully managed (no installation/updates, servers to mai1
- PCI, SOC, ISO, HIPAA compliant1
- Full API/SDKs/CLI support1
- YAML based configuration1
- Great support (forums, premium support, SO, GitHub)1
- Perpetual free tier option (100 mins/month)1
- GitHub Enterprise support1
- Poor branch support2
related AWS CodeBuild posts
The recent move of our CI/CD tooling to AWS CodeBuild / AWS CodeDeploy (with GitHub ) as well as moving to Amazon EC2 Container Service / AWS Lambda for our deployment architecture for most of our services has helped us significantly reduce our deployment times while improving both feature velocity and overall reliability. In one extreme case, we got one service down from 90 minutes to a very reasonable 15 minutes. Container-based build and deployments have made so many things simpler and easier and the integration between the tools has been helpful. There is still some work to do on our service mesh & API proxy approach to further simplify our environment.
Hi, I need advice. In my project, we are using Bitbucket hosted on-prem, Jenkins, and Jira. Also, we have restrictions not to use any plugins for code review, code quality, code security, etc., with bitbucket. Now we want to migrate to AWS CodeCommit, which would mean that we can use, let's say, Amazon CodeGuru for code reviews and move to AWS CodeBuild and AWS CodePipeline for build automation in the future rather than using Jenkins.
Now I want advice on below.
- Is it a good idea to migrate from Bitbucket to AWS Codecommit?
- If we want to integrate Jira with AWS Codecommit, then how can we do this? If a developer makes any changes in Jira, then a build should be triggered automatically in AWS and create a Jira ticket if the build fails. So, how can we achieve this?