When comparing Shippable vs Jenkins, the Slant community recommends Jenkins for most people. In the question“What are the best continuous integration tools?” Jenkins is ranked 5th while Shippable is ranked 16th. The most important reason people chose Jenkins is:
Even though Jenkins is pretty functional and useful out of the box, there's a large plugin ecosystem from which the user can choose plugins to integrate into their Jenkins build. This is needed for when the user wants to extend any of the tool's features.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
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.
Pro Highly customizable
Even though Jenkins is pretty functional and useful out of the box, there's a large plugin ecosystem from which the user can choose plugins to integrate into their Jenkins build. This is needed for when the user wants to extend any of the tool's features.
Pro Free and open source
Jenkins is a free and open source continuous integration tool, while its source code is hosted on GitHub.
Pro Safe to store key environment variables
Self-hosting provides a safe location to store key environment variables since it is the user who is in charge of the server and environment where Jenkins is hosted.
Pro A lot of resources and tutorials available
Jenkins has been in development since 2004 and is one of the most popular tools of its kind. This means that its technology is very mature and there is a lot of documentation and resources available for it.
Pro Multiple version control systems supported
Supports the most popular version control systems out of the box: SVN, Mercurial, and Git.
Pro Scalable
The distributed builds in Jenkins work effectively, thanks to the Master and Slave capabilities.
Pro Stable release line for users who want less changes
This is called the Jenkins Long-Term Support (LTS) version and helps to provide the most stable and assuring version of the Jenkins CI possible. Every 3 months, a version (which has been deemed the most reliable by the community) is chosen. After this, its branched, well-tested features are added (if they are missing), it is tested with the new features, bug fixes are then carried out if necessary, and from there it is released as the official Jenkins LTS version.
Pro User can source control their chain of automation
Starting with Jenkins 2.0, the pipeline capability, which has been available as a plugin before this version, has been built into Jenkins itself. This allows developers to describe their chain of automation in text form, which can be version controlled and put alongside the source tree.
Pro Quantity of available Plugins
For most operations we need not reinvent the wheel, there are plugins already existing.
Pro Cross-platform build support
Being a Java application it can be installed under any OS: Windows, Linux, and macOS. On the other hand, JNLP slaves also enriches the cross-platform build support for its agents.
Pro Easy to get up and running
A Jenkins install is very simple and the user can have the service up and running within minutes. To install Jenkins, the command java -jar jenkins.war
is all that is needed - nothing more.
Pro Supports most of the technological stacks for free by specific plugins
Including, Docker, Amazon EC2 and S3.
Pro Great community
Jenkins has a large and helpful community, which welcomes new users and provides a great number of tutorials.
Project Website, including links to Blog , Wiki, Docs. Community groups via Jenkins Users ML group.
Pro Self hosted
You stay in full control of your source code, build environment and deployment. No third party gets access to your source code or knows exactly how to build your software.
Pro Encryption of secrets
Thanks to JENKINS Credentials and Plugin.
Pro Multiple test environments for different runtime versions
They can be added easily under your Global Configuration.
Pro Awards and recognition
Including InfoWorld Bossie Award (Best of Open Source Software Award) in 2011, and Received Geek Choice Award in 2014.
Cons
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.
Con Poor quality plug-ins that are difficult to combine
There have been several complaints by users regarding the quality of the plug-ins found in Jenkins' official plugin repo. A lot of plugins found in the default plugin directory are no longer actively maintained and as a result, they may be incompatible with later versions of Jenkins or other plugins.
Con High overhead
Unlike some of the simple and hosted alternatives, users need to host and setup Jenkins by themselves. This results in both a high initial setup time, as well as time sunk into maintenance over a project's duration.
Con Unstable and lack of plugin integration QA process
Jenkins without plugins is almost useless. All plugins are treated equal and published almost right away.
Because there is no process for testing Jenkins' integration, the overall Jenkins experience is not that great. Furthermore, Jenkins' core and plugins are released on a regular basis, all requiring instant restarts, meaning that updates appear more than once a day!
Con Cannot get pipelines right
They are on the 5th attempt to make pipelines working. Still lot to be desired and clunky. Thoughtworks took CruiseControl and just rewrote it from scratch to make GoCD. Go.CD has pipeline support as first class citizens.
Con Restarting of pipeline steps only available in commercial version
Reliable pipelines with step restarts are only available in the enterprise version. Last time I talked to them in 2018, I was quoted $20k/year for that.
Con Vulnerable
Vulnerable to cross site and DOS attacks, read article Top 10 Java Vulnerabilities And How To Fix Them.
Con Limited pipeline size
Pipeline-as-code is limited to a JVM method size limit.