Basic concepts of Snake CI.

There are three main components of a Snake CI pipeline definition: Pipeline, Stage and Job.


Pipeline describes the entire software life-cycle using stages and jobs.

The pipeline is written in a YAML file called snake-ci.yaml and stored in the same repository. There is no need to connect or link the repository with Snake CI, the add-on automatically detects repositories that have the snake-ci.yaml file.

There can be only one pipeline for each repository, but it can consist of an unlimited number of stages.


Stages are blocks or groups of jobs. Every pipeline has the stages section with a list of stages to be executed. Each job has the stage field which points to the name of the stage. So, effectively, a stage is just a string that names a group of jobs.


Job is a group of commands required to be executed to accomplish the desired status (e.g. compile the program).

Jobs are the core components of every pipeline. Each job runs in an isolated container with a copy of the repository checked out to the commit that caused the start of the pipeline.

A job contains a list of commands to be executed in the isolated container, every command should be finished successfully. Otherwise, the entire pipeline will fail and remaining jobs will not be executed. Refer to the pipeline config reference for more details.

Runners, Containers

Snake Runner is an application that receives and executes jobs while the Snake CI add-on only schedules and shows them in the web interface. The runner does all the heavy job such as container management, job processing, and collecting logs.

In order to be scalable, cross-platform, and easy to use we picked up Docker Engine, which is a well-known and battle-tested solution for containers management.

Snake CI doesn’t limit your CPU capacity and allows you to setup any amount of runners to handle your CI/CD workload.

Last modified July 1, 2020