When comparing CircleCI vs Codeship, the Slant community recommends Codeship for most people. In the question“What are the best continuous integration tools?” Codeship is ranked 3rd while CircleCI is ranked 5th. The most important reason people chose Codeship is:
Support for public and private GitHub and BitBucket repositories. It also has support for multi-user teams.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Quick setup
CircleCI excels with its setup process. All that's needed is a GitHub login and CircleCI automatically detects the settings for Ruby, Python, Node.js, Java and Clojure. The setup process is their most widely praised feature.
Pro Simple and intuitive GitHub integration
CircleCI can be connected to any project that is hosted on GitHub by logging in using the GitHub OAuth and adding the desired repository.
Whenever a new commit is pushed to GitHub, CircleCI runs the tests that have been already defined and if none of them fails, the build is deployed to the runtime environment.
Pro SSH support
Users can access the Virtual Machine via SSH and run commands.
Pro Easy configuration with YAML
In most cases CircleCI automatically get settings from your code. When it fails, edit circle.yml.
Pro Very fast parallel testing
Tests can be parallelized across multiple machines reducing test times drastically. They support up to 8-way parallelization. Additionally, CircleCI caches the build environment.
Pro Clean, intuitive UI
Circle CI's web UI is clean and easy to use.
It gives all the information for a single build in a feed and gives the explanation for each step of the build, what it's doing and what the step is related to. On the top it displays author information and the time and date when the build was started and finished.
This is all done by giving only the most essential information without clogging the screen.
Pro Supports 8 languages and 16 databases
Support for Ruby, Python, Node, Java, PHP, RoR, DJ, JavaScript. It also detects settings for Ruby, Python, Node.js, Java and Clojure.
It als has support for: MySQL, MongoDB, PostgreSQL, Cassandra, Riak, Redis, SQLite, Solr, CouchDB, ElasticSearch, Neo4j, Couchbase, Lucene, Sphinx, ThriftDB, Memcache.
Pro Headless browser support
Alongside latest Chrome, Firefox and Webkit (installed using xvfb), CircleCi supports the use of Selenium, PhantomJS as well as tools like Capybara and Cucumber.
Pro Support for Queues
Support for RabbitMQ, Beanstalk and Resque through Redis.
Pro Supports Docker
CircleCI can continuously deliver Docker images to hosts that support Docker containers.
Pro Provides time taken for each step
Eg:
./1.setup.sh 48s
./2.build.sh 56s
With this information, it's easy to find out which line of the script is the bottleneck of the build process.
Pro Comprehensive cache dependencies
Can specify the cache dependencies on
- checksum "package.json"
- Branch
- BuildNum
- Revision
- Environment.variableName
For more details https://circleci.com/docs/2.0/caching/
Pro Intelligent notifications
CircleCI can notify via email, Hipchat, Campfire and more. And it does so only when necessary.
Pro Can test many code pushes concurrently
You can push multiple batches of code concurrently.
Pro Supports 10 Continuous Deployment solutions
Support for Heroku, AWS, Engine Yard, dotCloud, Fabric, Nodejitsu, AppFog, Capistrano, Rockspace, Joynet.
Integration with Heroku is solid with the ability to automatically deploy or merge branches.
CircleCI is also very flexible with the deployment arrangement allowing SSH key management, deployment freedom including directly to a PaaS, using Capistrano, Fabric, arbitrary bash commands, or by auto-merging to another branch, or packaging code up to S3.
Pro GitHub & Bitbucket integration
Support for public and private GitHub and BitBucket repositories. It also has support for multi-user teams.
Pro Keeps it simple. Doesn't allow too many "tricky" things which means builds are generally very stable once they are up and going.
Pro Headless browser support
Alongside latest Chrome and Firefox, Codeship supports the use of Selenium, PhantomJS, CasperJS as well as tools like Capybara.
Pro Build status GIF
There's a continuously updated GIF of the build status of the repository allowing you to determine whether build was successful or not.
Pro Support for multiple tools, languages and databases
Support for e-mail, HipChat, Slack, Campfire, Flowdock, Grove, Webhook, Github Status API.
Support for Ruby, Python, Node, Dart, PHP, Java, Scala, Groovy, Clojure, Go.
Support for: PostgreSQL, MySQL, MongoDB, Redis, Memcached, ElasticSearch, SQLite.
Pro Supports 7 cloud providers
Support for AWS, Digital Ocean, Rackspace, Google Compute, Joyent, Softlayer, Openstack.
Pro Docker support
Pro Simple deployments with a choice of 5 deployment tools
Support for Capistrano, Fabric, Chef, Puppet, Ansible and allows for writing your own scripts to deploy and manage your infrastructure.
Pro Supports 10 hosting providers
Support for Heroku, Engine Yard, Nodejitsu, dotCloud, App Engine, AppFog, Modulus, Openshift, Cloud Foundry, Fortrabbit and you can also run your own script to deploy anywhere.
Pro FTP, SFTP, SCP, RSYNC and SSH support
You can use FTP, SFTP, SCP, RSYNC and SSH for Continuous Deployment.
Pro Code Climate & Coveralls support
Automated code review for RoR and JavaScript and test coverage history and statistics with Code Climate and Coveralls.
Cons
Con Changes the environment without warning
Unless you count forum posts as a warning. A mysql upgrade caused days of debugging.
Con Does not cache docker images
The way to fake it is to save the image on disk, in the cache folder (it tars it), and restore it afterwards. But in tests it was slower than not caching.
Con Docker is way outdated on the VM provided
Currently (October 5th 2016), Docker installed on the VM is: 1.9.1-circleci-cp-workaround, build 517b158, and docker-compose is 1.5.2, build 7240ff3. docker-compose in particular is almost too old to be used.
Con Doesn't support git modules
If repo contain private submodule - build will fail, no way to add your private key.
Con Any time you ask support for help on Codeship basic (which isn't free anyway), they will just try to up sell you to Pro version.
Con No Global variables that can be shared amongst all projects.
Con Environment variables are exposed. Any keys or secrets can just be copied.
No option to mask them unless you reduce permissions for those users. Developers need to be able to modify a job but probably shouldn't be able to copy a production api key. Just needs one more level of permissions here.
Con Too many permissions on Bitbucket
When registering with Bitbucket Codeship it requests way to many permissions, even "Read and write to your team's projects and move repositories between them". Before giving all these permissions you have to be sure you can trust this service.
