Overview

A pipeline defines the Continuous Integration and Delivery process for your project. It can be thought of as a workflow that defines how your test, build, and deployment steps are run.

Example pipeline configuration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
---
kind: pipeline
type: docker
name: default

steps:
- name: build
  image: golang
  commands:
  - go build
  - go test

...

Drone supports different types of pipeline execution environments, where each type has its own custom yaml specification. The kind and type attributes define the type of pipeline and target execution environment.

1
2
3
4
---
kind: pipeline
type: docker
name: default

Docker Pipelines

Docker pipelines execute pipeline commands inside isolated Docker containers. Jump to the Docker pipeline documentation to learn more.

Docker Pipelines

Kubernetes Pipelines

Kubernetes pipelines execute pipeline commands inside pods, where each pipeline step is represented by a container in the pod. Jump to the Kubernetes pipeline documentation to learn more.

Kubernetes Pipelines

Exec Pipelines

Exec pipelines execute pipeline commands directly on the host machine using the default shell. Jump to the exec pipeline documentation to learn more.

Exec Pipelines

SSH Pipelines

SSH pipelines execute pipeline commands on a remote machine using the SSH protocol. Jump to the ssh pipeline documentation to learn more.

SSH Pipelines

Multiple Pipelines

You can define multiple pipelines in your yaml configuration file. This can be useful for executing tasks in parallel and executing pipelines on different architectures or operating systems. Jump to the multi-pipeline article to learn more.

Multiple Pipeline /configure/pipeline/multiple

Skipping Pipelines

You can skip pipeline execution for an individual commit by adding [CI SKIP] to your commit message. You can also skip pipeline execution based on branch, event and more in your configuration file.

Example syntax to limit pipeline execution by branch:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
kind: pipeline
type: docker
name: default

steps:
- name: build
  image: golang
  commands:
  - go build
  - go test

trigger:
  branch:
  - master

You can learn more about the triggers and limiting pipeline execution by choosing your pipeline type (docker, exec, etc) and visiting its respective section in the documentation.