:rocket: Self-Hosted Continuous Deployment Platform

At UBC Launch Pad, many of our teams’ projects are web applications. A pretty awesome step in any web application’s development process is when you deploy it for everyone to try out. Unfortunately, deployment can be a frustrating task, especially for students with little to no experience setting up applications on remote hosts. Some of these students might also be learning a new framework or programming language as part of their projects, all while dealing with the stresses of a full course load. On top of that, we frequently find ourselves needing to deploy projects to new environments as funds run out or sponsorships end in order to keep projects online.

This was an unfortunate situation — seeing your hard work up and running can be a nice motivation boost, and the ability to gather feedback from fellow students is invaluable. We realised that we needed a tool that could make setting up continuously deployed applications simple and painless, regardless of the hosting provider.

So we built one! Inertia is a cross-platform command line tool that aims to simplify setup and management of automated deployment of a variety of project types on any virtual private server. With an effortless 4-step setup process, Inertia has saved UBC Launch Pad teams a great deal of headaches and time deploying, allowing students to focus on building great applications.

Here are some of Inertia’s core features:

High-level overview of how Inertia works from our first internal demo.

I built and designed the majority of Inertia’s core functionality and helped guide over 20 contributors (both internal and external) in making additions and new features for the tool. I also created a comprehensive suite of development tools and scripts (code) to improve how Inertia is developed, including hacky tooling like disposable mock remote hosts using Docker containers. I also established a complex Travis CI pipeline that runs our comprehensive suite of unit and integration tests against a wide range of deployment targets (Ubuntu, CentOS, Debian, AmazonOS, etc.) automatically (blog post). It also builds and deploys releases to GitHub releases and DockerHub automatically!

Detailed architecture diagram of Inertia components - more details available in our godocs.

A preview of the work-in-progress Inertia Web for interacting with your deployment from anywhere!

Check out the project repository to see our work in more details! My direct contributions can be seen here.

# Even More Stuff About Inertia

I’ve written a fair bit about Inertia:

My team and I have also made a few presentations showcasing Inertia to fellow students and industry professionals:

Inertia team member Chad and I presenting at the 2018 Vancouver DevOps Days!

Inertia also inspired several spin-off side projects for myself:

Other fun stuff related to Inertia:

Robert Lin

Robert Lin

Enthusiastic eater of lunches. Please feel free to reach out to me at robert@bobheadxi.dev!

rss facebook twitter github youtube tumblr mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora