Sail CI: Introduction

The what, why and how of Sail CI

What is Sail CI?

Sail CI is Docker as tasks cloud-native continuous integration platform allowing teams to build and run simple and complex workflows against their codebase with unlimited concurrency using Docker images.

Core features

Sail CI lets you:

  • Never block your team with unlimited concurrency
  • Declare pipelines with tasks and execute commands using 100,000+ Docker images
  • Build and push Docker containers within your pipelines at lightning speed
  • Keep state across each task of your pipeline for ease of use with artefacts produced
  • Best in class GitHub integration with real-time logs, no context switching required

Why use Sail CI?

The goal of Sail CI is to empower teams to deliver more every day.

We want to provide cross-functional teams best in class collaboration throughout the lifecycle of a project. We want to include every role that makes up a team from developers all the way through to product owners.

We are entirely free to use while we are in open alpha to everyone and open source projects are free forever.

Sail CI treats Docker as a first class citizen and allows tasks to be scheduled instantly across many different resources. Teams can specify where and how tasks run.

Sail CI uses the following terminology for the components that make up builds when run.

Task

A task is a configuration object for a Docker image that runs commands against a codebase.

Pipeline

A group of tasks form a pipeline; it is the overarching configuration of how a  build is run from start to finish.

Workspace

A workspace provides provisioned storage that persists across all tasks within a pipeline mounted at /workspace.

The Build Process

Firstly Sail CI provisions storage known as a workspace. This workspace is attached to every task. When a pipeline is complete, Sail CI removes the workspace entirely. Sail CI never stores source code once a build completes.

The build process starts with Sail CI cloning the repository to the workspace folder /workspace/repo. Sail CI then runs each of the tasks specified within your .sail.yml file placed in the root of your project.

Sail CI sets the current working directory for each task to /workspace/repo.

A high-level diagram of a simple Node.js pipeline: