Drone CI или Woodpecker CI: что выгоднее и когда
Оба инструмента выглядят почти одинаково — YAML-пайплайны, контейнерные шаги, легкий self-hosted рантайм без Java-монстра вроде Jenkins. Но у них разная судьба: один стал частью коммерческой платформы, второй родился как community-форк именно потому, что первому перестали доверять на длинной дистанции. Разберёмся, что это значит на практике и какой из них ставить на свой сервер в 2026 году.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Откуда взялись оба проекта
Drone CI появился раньше — как лёгкая альтернатива Jenkins с пайплайнами в Docker-контейнерах и понятным .drone.yml. В 2019 году проект и его создателя (Brad Rydzewski) поглотила компания Harness, которая занимается корпоративными CI/CD-платформами. С этого момента Drone перестал быть просто открытым проектом: часть функций и приоритеты разработки сместились в сторону коммерческого продукта Harness CI, а self-hosted community-ветка стала развиваться медленнее и с оглядкой на бизнес-модель материнской компании.
Часть мейнтейнеров и сообщества эту ситуацию не устроила — прежде всего из-за неопределённости с лицензией и темпом релизов для тех, кто хочет just self-host и не платить. В 2019 году появился Woodpecker CI — форк Drone на классической Apache 2.0, без корпоративного владельца, с открытым governance и активным community-развитием. Сегодня это два разных проекта с общими корнями, но разной траекторией.
Если вам нужна площадка для тестов — что Drone, что Woodpecker разворачиваются на обычном VPS за 10-15 минут, подробности в статьях про установку Drone CI на VPS и про установку Woodpecker CI на VPS.
Лицензия и модель разработки — главное отличие
Это не техническая деталь, а то, что определяет всё остальное.
| Drone CI (Community Edition) | Woodpecker CI | |
|---|---|---|
| Владелец | Harness Inc. (коммерческая компания) | Сообщество, без единого владельца |
| Лицензия | Apache 2.0, но часть плагинов и функций — в платном Harness CI | Apache 2.0 на весь проект |
| Governance | Решения по roadmap принимает Harness | Открытый процесс, PR и обсуждения на GitHub |
| Темп релизов | Заметно замедлился после 2020 года | Регулярные релизы, активная разработка |
| Форк-пайплайны из PR (форки репозитория) | Ограничены в community-версии | Поддерживаются "из коробки" с изоляцией секретов |
Практический вывод: если выself-hostите CI просто для своих приватных репозиториев без чужих pull request'ов — разница не критична. Но если у вас open-source проект и вы хотите безопасно гонять CI на PR из форков (то есть от людей, которым вы не доверяете секреты), у Drone community-редакции это ограничено или требует обходных путей, а у Woodpecker работает штатно — сборки из форков по умолчанию не видят секретов родительского репозитория.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверСинтаксис пайплайнов: почти одно и то же, но не совсем
Woodpecker исторически совместим с форматом Drone — оба используют похожий YAML со списком steps, где каждый шаг это отдельный Docker-образ. Пример на Woodpecker (.woodpecker.yml):
steps:
build:
image: node:20-alpine
commands:
- npm ci
- npm run build
test:
image: node:20-alpine
commands:
- npm test
deploy:
image: alpine
commands:
- echo "deploy step"
when:
branch: main
event: push
И почти идентичный пайплайн на Drone (.drone.yml):
kind: pipeline
type: docker
name: default
steps:
- name: build
image: node:20-alpine
commands:
- npm ci
- npm run build
- name: test
image: node:20-alpine
commands:
- npm test
- name: deploy
image: alpine
commands:
- echo "deploy step"
when:
branch: main
event: push
Разница на первый взгляд косметическая: у Drone шаги — список, у Woodpecker — словарь с именованными ключами. Но у Woodpecker накопился ряд удобных надстроек, которых в бесплатном Drone либо нет, либо они появились раньше и потом застряли без развития:
- Условия по путям (
when: path:) — запускать шаг только если изменились файлы в определённой директории (полезно в монорепах). - Матричные сборки — прогнать один пайплайн с разными версиями (Node 18/20/22, разные ОС) без копипаста YAML.
- Множественные пайплайн-файлы — можно завести отдельный
.woodpecker/lint.yml,.woodpecker/deploy.ymlвместо одного огромного файла. - Нативный cron — периодические сборки без внешнего планировщика.
У Drone часть этого тоже есть, но именно в community-редакции многие продвинутые фичи требуют либо старых обходных схем, либо переезда на платный Harness CI.
Установка и требования к серверу
Оба инструмента устроены одинаково: сервер (веб-интерфейс + API + очередь задач) и один или несколько агентов/раннеров, которые реально выполняют шаги в Docker. Их можно развернуть на одной VPS через docker-compose или развести по разным машинам, если нагрузка большая.
Минимальный вариант для одного разработчика или маленькой команды — 2 vCPU, 2-4 ГБ RAM хватает и Drone, и Woodpecker с одним агентом. Разница начинает проявляться при параллельных сборках: агент запускает контейнер на каждый пайплайн, и если у вас 3-4 сборки одновременно (например, CI на нескольких ветках сразу), закладывайте по 512 МБ — 1 ГБ RAM на каждый параллельный джоб плюс память самих образов сборки (Node, Go, Python-контейнеры весят по-разному). Подробный разбор с цифрами — в статьях сколько RAM нужно для Drone CI и сколько RAM нужно для Woodpecker CI.
Готовые docker-compose файлы для быстрого старта — в статьях Drone CI в Docker Compose и Woodpecker CI в Docker Compose. Если по каким-то причинам предпочитаете установку без контейнеров — есть пошаговые инструкции для Ubuntu 24.04 по каждому из инструментов, ищите по названию в блоге.
Минимальный сервер под Woodpecker (для примера, суть у Drone аналогичная):
services:
woodpecker-server:
image: woodpeckerci/woodpecker-server:latest
ports:
- "8000:8000"
environment:
- WOODPECKER_OPEN=true
- WOODPECKER_HOST=https://ci.example.com
- WOODPECKER_GITEA=true
- WOODPECKER_GITEA_URL=https://git.example.com
- WOODPECKER_GITEA_CLIENT=xxx
- WOODPECKER_GITEA_SECRET=xxx
- WOODPECKER_AGENT_SECRET=change_me_long_random
volumes:
- woodpecker-server-data:/var/lib/woodpecker
woodpecker-agent:
image: woodpeckerci/woodpecker-agent:latest
command: agent
depends_on:
- woodpecker-server
environment:
- WOODPECKER_SERVER=woodpecker-server:9000
- WOODPECKER_AGENT_SECRET=change_me_long_random
- WOODPECKER_MAX_WORKFLOWS=2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
volumes:
woodpecker-server-data:
Интеграция с Git-форджами
Оба поддерживают GitHub, GitLab, Gitea, Bitbucket и Forgejo через OAuth. Практическая разница: если у вас self-hosted Gitea (частый выбор для приватных проектов на своём сервере вместо GitHub — см. статью Gitea против GitLab), интеграция с Woodpecker обычно ощущается более "родной" — сообщество активно тестирует именно связку Gitea + Woodpecker, это де-факто самый популярный self-hosted стек для небольших команд, которые хотят полностью свой Git + CI без сторонних облаков.
Drone тоже прекрасно работает с Gitea и GitLab, но приоритет разработки у Harness — на enterprise-интеграции (крупные GitHub Enterprise, GitLab Self-Managed инсталляции с SSO), что логично для их основной аудитории.
Безопасность и работа с секретами
В обоих системах секреты (токены, ключи, пароли для деплоя) хранятся на сервере CI и пробрасываются в контейнеры шагов через переменные окружения, а не лежат в репозитории. Ключевое отличие — политика по умолчанию для pull request'ов из форков:
- Woodpecker: сборки из PR внешних форков по умолчанию не получают доступ к секретам репозитория, если явно не разрешить обратное. Это снижает риск, что кто-то через вредоносный PR утащит ваши деплой-ключи.
- Drone (community): похожая логика поддерживается, но настройка и документация по этой теме менее подробная, а часть тонкой настройки политики секретов исторически была частью платных возможностей.
Если ваш CI работает только с приватными репозиториями и без внешних контрибьюторов — риск в обоих случаях примерно одинаковый, разница станет заметна только на open-source проекте с чужими pull request'ами.
Когда что выбрать: практические сценарии
Берите Woodpecker CI, если:
- Хотите полностью open-source стек без риска, что завтра часть функций уедет за paywall.
- У вас open-source или полуоткрытый проект с pull request'ами от посторонних людей.
- Уже используете (или планируете) self-hosted Gitea/Forgejo.
- Важна активная разработка и быстрый отклик на баги/issue от сообщества.
- Монорепо, где нужны условные запуски по путям и матричные сборки без танцев с бубном.
Берите Drone CI (community), если:
- У вас уже есть пайплайны на Drone и переезд не оправдан по времени — синтаксис почти идентичен, но миграция всё равно требует тестирования.
- Работаете в компании, которая рассматривает переход на коммерческий Harness CI в будущем и хочет плавную траекторию с тем же вендором.
- Нужны специфические Drone-раннеры (например, exec runner для сборки вне Docker) — экосистема плагинов и раннеров у Drone исторически шире за счёт более раннего старта.
Для большинства новых self-hosted проектов на 2026 год баланс явно склоняется в сторону Woodpecker — активнее развивается, честнее по лицензии, лучше документирован для типичного сценария "свой Git + свой CI на одном VPS". Drone остаётся разумным выбором, только если у вас уже есть на нём инвестиции или вы целитесь на путь к Harness.
Если после выбора инструмента возникнут проблемы с самим сервисом — частые ошибки Drone разобраны здесь, Woodpecker — здесь.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли мигрировать пайплайны с Drone на Woodpecker без переписывания с нуля?
В большинстве случаев да — базовый синтаксис steps с image и commands совместим, придётся адаптировать секции when, матрицы и специфичные для Drone плагины (некоторые официальные Drone-плагины не имеют точного аналога в Woodpecker, но большинство задач закрывается обычными Docker-образами и shell-командами).
Woodpecker точно бесплатный и без скрытых ограничений?
Да, весь проект под Apache 2.0, нет платных тиров, нет ограничений на число репозиториев или сборок — единственный лимит это ресурсы вашего собственного сервера.
Нужен ли отдельный сервер под агент, если сборок мало?
Нет, для небольшой команды сервер и агент прекрасно уживаются на одной VPS 2-4 ГБ RAM — разносить их по разным машинам имеет смысл только при заметной параллельной нагрузке.
Что проще администрировать новичку — Drone или Woodpecker?
Разница минимальна, оба ставятся через docker-compose за 10-15 минут. У Woodpecker чуть более полная актуальная документация под текущие версии, у Drone — больше старых статей в интернете, которые местами устарели после смены владельца проекта.
А как насчёт GitLab CI или Jenkins вместо этих двух?
Это отдельная лига: GitLab CI встроен в GitLab и не нужен отдельный сервер CI, если вы уже используете GitLab; Jenkins мощнее по плагинам, но тяжелее в администрировании. Drone и Woodpecker — про лёгкость и Docker-first подход, если нужен именно такой стиль.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →