When comparing CircleCI vs Shippable, the Slant community recommends CircleCI for most people. In the question“What are the best continuous integration tools?” CircleCI is ranked 6th while Shippable is ranked 16th. The most important reason people chose CircleCI is:
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.
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 Builds are faster
The fact that Shippable runs inside of Docker means that it keeps a persistent state and every build will not have to revert to initial state where it needs to install every dependency from the ground up. Classic CI tools that run on virtual machines need to reset their environment every time and every time install the gems, packages and services needed.
Pro GitHub and Bitbucket integration
Shippable supports both BitBucket and GitHub. Repositories uploaded on either of those services can be built using Shippable.
Pro Free plan available
Unlimited builds for unlimited public repos and up to 5 private repositories.
Pro Docker integration
Shippable is built using Docker, a popular open source Linux container. It was originally built using it's own container but when that started to become too complex, they switched to using Docker. Since the beginning Shippable was different from other CI tools because while Shippable uses a container (Docker), traditionally CI tools have used virtual machines to manage their workloads.
Pro Quick setup
All Shippable needs for it's setup is a shippable.yml
file in the root of the repository that needs to be built. The bare minimum Shippable needs is the language and the version number specified in that file.
Pro Integrated code coverage and test results visualization
No need to use coveralls or any other tool for code coverage visualization. Code coverage and test results are integrated into the product.
Pro Build as Code
Builds are described in the shippable.yml file located in the root of your project. This empowers engineers to take responsibility for code delivery. If you are coming from Travis CI, Shippable reads your .travis.yml file directly so you can try it out painlessly.
Pro Build on your own host
Teams can set up Docker containers on their own servers and run Shippable in there.
Pro Supports monitoring and tracking utilization and system performance for your devops automation infrastructure
Pro Cheaper than competitors
Plans are significantly cheaper than competitors.
Pro Testing against multiple runtimes, versions and environments
Supports builds against multiple runtimes, environment variables, and platforms.
Pro 2X faster than any other platform
The accuracy & speed is 2x more compared to all the other available CI & CD platforms.
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 Requires way to much permissions when logging in using Bitbucket
It even requests the permission to "Delete your repositories".
Con No Direct Deploy to S3
Currently, Shippable does not allow for build artifacts to be natively deployed to S3. This can be gotten around, however it is a rather large hole when compared to Travis.
In order to deploy to S3 you have to add a couple of lines to the yml file. For example:
env:
global:
#secure variable contains values for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
- secure: HKwYujx/qmsyQQdHvR2myu8HLUDtcLeDyYV149YJuxIV4J7Hk3SxeY8X3D6aTlR8mvMnd/ZFY+tGNUh4G0xtLLjjZcPsBgvFlB
build:
on_success:
- aws s3 sync $SHIPPABLE_BUILD_DIR "s3://bucket_name" --region "us-east-1"
Con Docker security measures may be a hindrance
Shippable runs inside Docker containers. Docker has some specific security measures which may or may not become a hindrance in using Shippable. It may be harder for users who are not very comfortable with a Linux container environment and that can create some security problems. Even for more advanced users, it's still something more that they have to address while using Shippable.