Drone CI — платформа непрерывной интеграции и доставки с открытым исходным кодом, построенная на контейнерной архитектуре. Каждый шаг pipeline выполняется в отдельном Docker-контейнере с изолированной файловой системой. Проект начат в 2012 году, в 2020 году приобретён компанией Harness.
Как работает
Конфигурация Drone CI хранится в файле .drone.yml в корне репозитория — принцип Pipeline as Code. Пример минимального pipeline:
kind: pipeline
type: docker
name: default
steps:
- name: test
image: golang:1.21
commands:
- go test ./...
- name: build
image: golang:1.21
commands:
- go build -o app .
- name: deploy
image: appleboy/drone-ssh
settings:
host: server.example.com
username: deploy
key:
from_secret: ssh_key
script:
- ./deploy.sh
Каждый step запускает отдельный контейнер с указанным Docker-образом. Шаги исполняются последовательно; при провале любого шага pipeline останавливается. Контейнеры шагов разделяют один рабочий workspace через Docker volume — файлы, созданные в предыдущем шаге, доступны в следующем.
Drone Server — центральный компонент, хранит статусы сборок и принимает webhook-события от GitHub, GitLab, Bitbucket. Drone Runner — агент на сервере, выполняющий pipeline. Runnerы бывают: Docker Runner (Linux/Windows контейнеры), Kubernetes Runner (запуск в k8s), SSH Runner (команды на удалённом сервере), Exec Runner (напрямую на хосте).
История
Drone CI создан Брэдом Риком (Brad Ryck) в 2012 году как первая cloud-native, container-native CI-система — раньше, чем Docker получил массовое распространение. Первый публичный релиз вышел в 2014 году. К 2020 году Drone набрал более 50 000 активных пользователей и 100 миллионов загрузок образа с Docker Hub. В августе 2020 года компания Harness приобрела Drone.io, взяв на себя обязательства по поддержке open-source версии. Основная ветка разработки продолжается под лицензией Apache 2.0.
Drone CI vs GitHub Actions vs GitLab CI
| Критерий | Drone CI | GitHub Actions | GitLab CI |
|---|---|---|---|
| Self-hosted | Да (основной режим) | Да (runners) | Да |
| Конфиг | .drone.yml | .github/workflows/*.yml | .gitlab-ci.yml |
| Контейнеры | Нативно (каждый step) | Опционально | Нативно |
| Marketplace плагинов | 250+ Drone plugins | 20,000+ actions | CI templates |
На что обращать внимание
Drone CI требует Docker на машине с runner — это одновременно его сильная и слабая сторона. На серверах без Docker (например, OpenVZ-контейнеры, не поддерживающие вложенную виртуализацию) Drone не работает. Секреты (пароли, ключи) хранятся в Drone Server или в системах хранения секретов; из .drone.yml доступны через from_secret. При self-hosted установке Drone Server нужен TLS и доступный публичный URL для приёма webhook от GitHub/GitLab.
Drone CI на VPS
Drone CI — container-first CI/CD: каждый шаг pipeline выполняется в изолированном Docker-контейнере. Установка: Drone Server + Runner через Docker Compose на VPS. Интеграция с GitHub, GitLab, Gitea. Файл .drone.yml в корне репозитория описывает pipeline. Runners: Docker Runner (стандартный), Kubernetes Runner (в Kubernetes), Exec Runner (нативно на хосте). Преимущества перед Jenkins: меньше ресурсов, проще конфигурация. Конкуренты: GitHub Actions (бесплатно для GitHub), Woodpecker CI (форк Drone). Бесплатен для self-hosted установок.