Как Harness превращает Drone CI в полноценный комбайн для разработки
Помните Drone CI? Тот самый лаконичный и быстрый инструмент для автоматизации сборок, который многие любили за простоту настройки через YAML и легкость в Docker-окружении. Разработчики из Harness решили, что простого CI уже мало, и выкатили open-source платформу, которая пытается закрыть вообще все потребности команды в одном флаконе.
Я наткнулся на этот репозиторий, когда искал альтернативу тяжеловесному GitLab для небольшого внутреннего проекта. Оказалось, что ребята не просто сделали ребрендинг, а строят полноценную систему «все в одном»: от хостинга кода до управления артефактами.
Что это вообще такое
Если вкратце, Harness Open Source — это попытка собрать воедино то, что мы обычно соединяем «синей изолентой» из разных сервисов. Внутри одного бинарника (написанного на Go, что приятно) уживаются:
- Хостинг репозиториев (свой Git-сервер).
- Конвейеры CI/CD (наследство Drone).
- Реестр артефактов (Artifact Registry).
- Gitspaces — облачные среды разработки.
Интересно, что проект позиционируется как преемник Drone. Разработчики честно пишут в README: Drone фокусировался только на CI, а Harness — это про end-to-end цикл. При этом старый добрый Drone не забросили, а вынесли в отдельную ветку, чтобы он жил своей жизнью, пока основная команда пилит новый комбайн на main.
Главные фишки, которые зацепили
Единая точка входа
Вместо того чтобы настраивать GitHub для кода, Jenkins для билдов и Nexus для образов, вы поднимаете один контейнер. Для локальных тестов или небольших команд это дико удобно. Поднять всё это можно одной командой:
docker run -d \
-p 3000:3000 \
-p 3022:3022 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/harness:/data \
--name harness \
--restart always \
harness/harness
Gitspaces или прощай «у меня не собирается»
Это, пожалуй, самая актуальная штука для тех, кто устал настраивать окружение каждому новому джуну. Harness позволяет разворачивать готовые dev-контейнеры прямо из интерфейса. Вы описываете среду в конфиге, и разработчик получает готовую рабочую область в браузере или через SSH.
Нативный реестр артефактов
Обычно после сборки образа в CI его нужно куда-то пушить: в Docker Hub, GCR или свой Harbor. Здесь реестр встроен по умолчанию. Это экономит время на настройку прав доступа и сетевых доступов между разными сервисами.
Техническая начинка
Под капотом у Harness старый добрый Go и React на фронтенде. Архитектура довольно прозрачная. Если захотите собрать проект из исходников, понадобится Go 1.20+ и Node.js.
Приятно удивило, что проект поддерживает работу с разными Docker-сокетами. Если вы сидите на Mac и используете Colima или Rancher Desktop вместо стандартного Docker Desktop, Harness поймет это через переменную окружения GITNESS_DOCKER_HOST.
Для автоматизации API используется Swagger. Если вы планируете писать свои расширения или интегрировать Harness в свою систему, можно просто зайти на localhost:3000/swagger и посмотреть все эндпоинты. Там же можно сгенерировать токен доступа (PAT) через CLI и сразу начать дергать API через curl.
Кому это пригодится
Я бы не стал советовать переносить сюда огромный энтерпрайз с тысячей микросервисов прямо завтра — проект еще активно допиливается до полного паритета с фичами Drone. Но есть три сценария, где Harness выглядит очень выигрышно:
- Self-hosted разработка в закрытом контуре. Когда политика безопасности запрещает использовать внешние SaaS-решения, а ставить и поддерживать пять разных опенсорсных инструментов нет ресурсов.
- Пет-проекты и стартапы. Когда хочется иметь всё и сразу, не тратя время на интеграцию GitHub Actions с внешними реестрами.
- Обучение и хакатоны. Быстрый старт полноценной платформы за две минуты в Docker — это киллер-фича для команд, которым нужно быстро начать кодить.
Harness Open Source выглядит как очень амбициозная попытка сделать «GitLab на минималках», но с фокусом на скорость и Docker-нативность. Если вам нравился Drone за его простоту, то и здесь вы почувствуете себя как дома, только возможностей станет в разы больше.
Стоит ли пробовать? Определенно да, хотя бы ради того, чтобы посмотреть на реализацию Gitspaces. Проект живой, коммиты летят каждый день, а 34 тысячи звезд на GitHub говорят о том, что сообщество в него верит. С чего начать? Просто запустите Docker-контейнер и посмотрите, как это работает в браузере на 3000 порту. Интуитивно всё понятно даже без глубокого чтения доков.
