Continuous Integration (CI) helps developers to speed up the application development life cycle by automating build, test and deployment of the application. Continuous Delivery (CD), helps developers in shipping code from source control systems to the production environment.
You can have both CI and CD, for free, by using Shippable.In this tutorial, I'll go over what's available for free, when you need to upgrade and how to upgrade.
What's for free
Continuous Integration: Shippable's hosted CI platform helps developers by:
- Automating builds for every code commit, pull request, tag and release actions from a source control system.
- Running unit tests to find errors and bugs in the code as soon as they are introduced.
- Providing the ability to customize notifications and visualization of CI results.
- Allowing the use of your own Docker images or build a Docker image as part of CI, for Docker users.
All CI builds are run on Docker based containers and you get one free CI build container (2 core, 3.75GB RAM) that supports unlimited public and private repositories for unlimited users from your source control provider. You can run as many builds as you want.
Continuous Delivery: Shippable's hosted CD platform uses Pipelines which includes end to end activities required to prepare, validate and deploy changes in an application development life cycle. This is represented by a single versioned, deployable unit called Cell. Through Pipelines, Shippable helps developers by:
- Automating the flow of Docker based applications from CI to a versioned deployable unit (Cell).
- Automatically deploy Cells to Container Services such as Amazon's ECS or Google Container Engine.
- Providing the ability to upgrade or roll back a Cell with a single click.
- Auto deploying to test environments, giving the ability to run automated functional tests for every code commit.
You get one free Pipeline, that allows you to set up deployment for one Cell.
Hybrid: Shippable also offers the Bring Your Own Host (BYOH) option, for customers who want complete control over the build hosts. For CI you can use your own host (configured to any size capacity), while Shippable provides the central orchestration from our SaaS service.
You get one free CI build container and can upgrade for parallel CI builds.
When to upgrade
Continuous Integration: We support unlimited CI builds for unlimited repositories for free. Since a CI build is triggered for every code commit or pull request, they are processed in a serial order. This means, when build #1 completes, build #2 starts. When #2 completes, #3 starts and so on. While the CI build on our platform takes few minutes to complete, these can quickly add up if you have multiple builds being triggered due to multiple developers committing code or initiating pull requests. To reduce a developer's wait time to complete the CI build, upgrading to concurrent, parallel CI builds is recommended.
Let's see it practically. Say, you have an organization with the following assumptions:
- Number of developers working concurrently: 25
- Average number of builds triggered per developer: 10
- Length of the period, developers are working (in hours): 8
- Average build duration (in minutes): 15
- Acceptable probability of a 5 minute wait time for a build to start: 0.10
- Acceptable probability of a 30 minute wait time for a build to start: 0
Using the above values, let us compute the probability of the wait time in minutes for a specified number of build containers (aka Minions):
Minions | 0.5 mins | 5 mins | 10 mins | 15 mins | 20 mins | 25 mins | 30 mins | 45 mins | 60 mins |
8 | 0.90 | 0.85 | 0.80 | 0.75 | 0.71 | 0.66 | 0.62 | 0.52 | 0.43 |
9 | 0.57 | 0.40 | 0.27 | 0.18 | 0.12 | 0.08 | 0.06 | 0.02 | 0.01 |
10 | 0.34 | 0.18 | 0.09 | 0.04 | 0.02 | 0.01 | 0 | 0 | 0 |
11 | 0.20 | 0.08 | 0.03 | 0.01 | 0 | 0 | 0 | 0 | n/a |
12 | 0.11 | 0.03 | 0.01 | 0 | 0 | 0 | 0 | n/a | n/a |
13 | 0.05 | 0.01 | 0 | 0 | 0 | 0 | 0 | n/a | n/a |
14 | 0.03 | 0 | 0 | 0 | 0 | 0 | n/a | n/a | n/a |
15 | 0.01 | 0 | 0 | 0 | 0 | n/a | n/a | n/a | n/a |
From the above table, there is an 85% probability that a build will incur a 5 minute wait time for 8 minions doing concurrent, parallel CI builds. If you increase the number of minions to 9, then there is a 40% probability that build will incur a 5 minute wait time.
Hence to be absolutely certain to never incur a wait time of 30 minutes (0% probability that a build will incur a 30 minute wait time), the recommended number of minions is 10.
Remember, the above table is for an 8-hour day. With this information, if you take the $/hr cost of a developer, you will be able to compute the loss of developer productivity, spent in waiting for a build to complete, for a day, month and year.
To plug in your own organizational values, you can use this cool Node.js app to compute the above table and determine the number of build containers (Minions) you'll need for concurrent, parallel build processing for CI.
Continuous Delivery: We support one Pipeline with one cell for free. This means you can build and automate your entire application delivery for a single service. If your application has multiple services or tiers, then you'll need to upgrade for additional pipelines. For example, if you have a 3 tier application with UI, API and a database service, then you will need 3 pipelines.
Hybrid: Similar to CI, for the BYOH implementation, if you have a need to run parallel CI builds simultaneously, then an upgrade to increase the number of CI build containers is recommended.
On-premises: If are looking to run the entire Shippable product on-premises, yourself, we are working on a beta program to support this. Contact us to sign up for a private beta.
How to upgrade
Pricing plans are enforced at a subscription level, where a subscription is an individual or an organizational account on GitHub or BitBucket. Once you determine the number of parallel CI build containers and pipelines you need for your subscription, follow these steps:
- Login to the Shippable portal using your GitHub or Bitbucket account
- Select your 'Subscription' account from the drop down
- Click the 'Billing' tab
- Click 'Update plan'
- Move the slider under the 'Please choose the number of containers you want to buy:' section to the number of containers you want
- Move the slider under the 'Please choose the number of pipelines you want to buy:' section to the number of pipelines you want
- NOTE: We provide pipelines in increments of 3
- Provide your credit card information, for the first time
- Subsequently you have the choice of using an existing or adding a new credit card
- Click 'Save'
- Ensure you have a valid 'Billing email'
- Click 'Buy'
IMPORTANT:
- If you need more than 25 CI build containers or 40 pipelines, contact us to arrange for your plan.
- When you add more build containers and/or pipelines, they will be available immediately.
- When you click 'Buy' we charge your credit card immediately and send you an invoice.
- If you reduce your containers or pipelines, your bill will be adjusted in the next billing cycle. We do not prorate monthly charges or issue refunds.
Check out our FAQ on pricing and additional documentation on this topic.
What are you waiting for, get started for free!