Introducing Shipit

3 minute read After a year of internal use, we’re excited to open-source our deployment tool, Shipit. With dozens of teams pushing code multiple times a day to a variety of different targets, fast and easy deploys are key to developer productivity (and happiness) at Shopify. Along with key improvements to our infrastructure, Shipit plays a central role in making this happen.

Jean Boussier
3 min readbeginner
--
View Original

Overview

Shipit is an open-source deployment tool developed by Shopify, designed to enhance developer productivity by facilitating fast and easy code deployments. After a year of internal use, it addresses challenges faced by large development teams, such as coordinating deployments and maintaining an audit trail.

What You'll Learn

1

How to set up Shipit for your deployment needs

2

Why using GitHub webhooks can improve deployment performance

3

When to implement safety mechanisms in deployment processes

Key Questions Answered

What challenges does Shipit address for large development teams?
Shipit addresses challenges such as coordinating frequent deployments, ensuring that no one else is deploying, and maintaining an audit trail of deployments. It simplifies the deployment process for developers by allowing them to deploy code without needing extensive knowledge of production hardware or credentials.
How does Shipit improve deployment performance?
Shipit improves deployment performance by using GitHub's push and status webhook events instead of polling for CI status. This change reduces latency and enhances the integration with third-party services that utilize the GitHub Statuses API.
What is the purpose of the shipit.yml file?
The shipit.yml file is used to maintain deployment recipes within each project, allowing for easier configuration and version control. This model simplifies the setup process and eliminates the need to specify deployment commands explicitly.
What features does Shipit offer for deployment monitoring?
Shipit provides features such as displaying key metrics before deployments, adding checklists, and creating visualizations during deployments. These tools help developers monitor progress and abort deployments if necessary.

Key Statistics & Figures

Number of projects deployed by Shipit
over 200
Shipit deploys over 200 projects, including itself, several hundred times daily.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Backend
Github
Used as the source of truth for deployments, leveraging webhooks for improved performance.
Backend
Capistrano
Used for deploying applications as part of the Shipit deployment process.

Key Actionable Insights

1
Implement safety mechanisms in your deployment process to prevent code deployment during critical maintenance periods.
This is crucial for maintaining system stability and avoiding conflicts during high-risk operations. Shipit allows developers to set locks to ensure safe deployment practices.
2
Utilize the shipit.yml file to streamline your deployment configurations and keep them under version control.
This approach not only simplifies the setup process but also ensures that deployment recipes are easily accessible and modifiable, facilitating better team collaboration.
3
Leverage GitHub's webhook events to enhance the performance of your deployment tool.
By relying on push and status events, you can reduce latency and improve integration with other services, leading to a more efficient deployment workflow.

Common Pitfalls

1
Failing to implement safety mechanisms can lead to conflicts during deployments.
Without proper locks or checks in place, multiple developers may attempt to deploy simultaneously, causing potential system instability.