Bitbucket Data Center
Трекеры задач · издатель buff · версия 1.0.5
Вопросы и ответы прямо в pull request вашего Bitbucket Data Center или Server — там, где идёт ревью.
Ответ приходит комментарием в тот же pull request и разобран по его ветке. Форма настройки строится по схеме, которую интеграция объявляет о себе. Подключение работает: свой процесс, свой набор инструментов, свой разрешённый адрес. Проверка связи говорит не «ок», а версию Bitbucket, учётную запись и число репозиториев. Что интеграция получит, видно в каталоге коннектора до установки.
Нажмите на снимок, чтобы открыть его целиком. Все снимки — с работающей установки.
Обзор
Своего трекера задач у Bitbucket Data Center нет — команды держат задачи в другом месте, а в Bitbucket ведут код. Поэтому интеграция живёт там, где работа: в pull request. Разработчик пишет боту в обсуждении, ответ приходит туда же и разобран по коду ИМЕННО этой ветки, а не по основной.
Сценарии
Ситуации, ради которых его ставят.
Вопрос по коду прямо в ревью
Ревьюер открыл чужой pull request и не понимает, зачем понадобилась правка в трёх местах сразу. Спрашивать автора — ждать до завтра, читать всю ветку самому — полдня.
Результат. Он пишет боту в обсуждении. Ответ приходит туда же и разобран по коду ЭТОЙ ветки: что меняется, почему связаны три места и на что это влияет. Ревью продолжается в том же окне.
Что здесь меняется по существу
Pull request на восемьсот строк, а вопрос простой: что меняется по делу и чего не хватает.
Результат. Бот читает изменения одним diff и отвечает по существу — что меняется, что осталось недоделанным, где тесты не покрывают новую ветку кода. Ответ лежит в самом pull request, рядом с изменениями.
Задача разработки из обсуждения ревью
В ревью выяснилось, что правку нужно доделать отдельно, и это надо куда-то записать, пока не забылось.
Результат. Buff заводит черновик задачи разработки по обсуждению и возвращает ссылку комментарием. Ревью не превращается в переписку о том, кто заведёт задачу.
Это уже было — найти, где именно
Изменение подозрительно похоже на прошлогоднее, но помнит его только тот, кто в отпуске.
Результат. Интеграция ищет по отмеченным репозиториям и приносит связанные pull request — прошлые заходы на ту же подсистему, изменения, на которые опирается текущее.
Примеры
Что написать и что придёт в ответ. Обращение к боту задаётся в настройках подключения — здесь это «@buff».
@buff перечисли, что меняет этот pull request, и чего в нём не хватает
комментарий в pull request
инструмент:
get_pull_diffМеняет три места: разбор CSV (добавлен BOM), заголовок ответа (появился charset=utf-8) и тест выгрузки. Не хватает: выгрузка из планировщика идёт другим путём и BOM там не добавляется — файл из ночной задачи откроется так же криво.
/research разберись, откуда берётся задержка в отчёте
комментарий в pull request — так запускается глубокое исследование
инструмент:
get_pullСлово после обращения выбирает работу: без него — короткий ответ, «research» — глубокое исследование с документом, «task» — черновик задачи разработки. Команда через слэш тоже работает.
@buff что уже обсуждали в этом ревью?
комментарий в pull request с длинной перепиской
инструмент:
get_pullКраткая выжимка обсуждения: что просили изменить, что автор ответил, о чём договорились и что осталось нерешённым. Полезно, когда ревью тянется неделю и в нём тридцать комментариев.
@buff найди pull request про кеширование каталога
комментарий в любом pull request отмеченного репозитория
инструмент:
search_pullsНашёл 3 захода на кеширование: • ACME/api!218 «Сброс кеша каталога после смены цены» — влит • ACME/api!341 «Прогрев кеша после деплоя» — влит • ACME/api!402 «Дубли в выдаче после инвалидации» — открыт, похоже на текущее
Что умеет
Отвечает по ветке того pull request, в котором спросили
Вопрос, заданный в pull request, — это вопрос о коде ЭТОГО pull request. Интеграция передаёт вместе с обращением репозиторий и ветку, платформа подтягивает свежую копию репозитория и разбирает вопрос на его ветке, а не на основной. Здесь это не приятная деталь, а весь смысл: другого места для вопроса в Bitbucket DC нет.
Читает pull request целиком
get_pull отдаёт модели замысел изменения и всё обсуждение, get_pull_diff — сами изменения одним diff. Оба инструмента только читают.
Ищет по отмеченным репозиториям
search_pulls ходит по репозиториям, которые вы отметили, и находит связанные pull request — прошлые заходы на ту же подсистему, изменения, на которые опирается текущее. Тоже только чтение.
Отвечает в том же обсуждении
add_comment пишет ответ туда, где спросили. Это единственный инструмент интеграции, который что-то меняет, — и он недоступен на стадиях, где модель только читает. Проверяет это коннектор у себя.
Берётся за работу только по обращению
Ни аппрув, ни смена статуса, ни новый коммит не запускают ничего: работу начинает прямое обращение — упоминание или команда через слэш в комментарии. Список отмеченных репозиториев и есть контроль доступа: внутри них позвать бота может любой участник, за их пределами — никто, и писать туда интеграция тоже не станет.
Как пользоваться
Всё происходит на машине, где стоит коннектор. Открывать доступ к вашей сети снаружи не нужно ни на одном шаге.
Шаг 1
Установка занимает одно нажатие
Откройте раздел «Маркетплейс» на локальной странице коннектора. До установки видно, что интеграция получит: адреса, по которым она сможет ходить, какие учётные данные попросит, будет ли принимать вызовы и сколько инструментов увидит модель. Коннектор скачивает подписанный бандл из нашего реестра и проверяет подпись до того, как что-то запишет на диск.
КоннекторГраницы доступа видны в каталоге до установки. Шаг 2
Настройка — адрес, токен и список репозиториев
Нужен адрес вашего Bitbucket, HTTP access token учётной записи бота и репозитории в формате КЛЮЧПРОЕКТА/репозиторий. Форма построена по схеме, которую интеграция объявляет о себе. Токен остаётся в коннекторе: интеграция его не видит.
КоннекторФорма настройки строится по схеме интеграции. Шаг 3
Заведите боту отдельную учётную запись
Дайте ей доступ только к тем репозиториям, где бот должен отвечать: права учётной записи — это внешняя граница, а список отмеченных репозиториев — внутренняя. Прав на чтение и комментирование достаточно; администратором бот быть не должен. Токен создаётся под самим ботом — Bitbucket не позволяет администратору выпустить токен за другого.
Шаг 4
То же самое из командной строки
Установка без графики равноправна, а не запасной вариант: `connector install bitbucket-dc`, затем `connector instance add bitbucket-dc --config base_url=… --config repos=ACME/api`.
Шаг 5
События приходят сами
После настройки ничего запускать не нужно: интеграция сама следит за отмеченными репозиториями. Хотите быстрее — включите приём событий у коннектора и добавьте в Bitbucket вебхук на событие «Pull request → comment added»; ссылку и секрет коннектор выдаёт сам, а подпись Bitbucket (`X-Hub-Signature`) он проверяет.
КоннекторКаждое подключение — отдельный процесс со своим набором инструментов.
Границы доступа
То же самое коннектор показывает на вашей машине до установки. Список берётся из подписанного каталога, а не написан здесь руками.
Ходит наружу
только по адресам из полей base_url
Учётные данные
api — значения остаются в коннекторе, интеграция их не видит
Вебхуки
deliver — порт открываете вы, по желанию
| Инструмент | Что делает | Доступ |
|---|---|---|
| search_pulls | Найти pull request по тексту — когда упомянут номер или нужен контекст из ревью | только чтение |
| get_pull | Прочитать pull request с обсуждением — когда нужен замысел изменения или ход ревью | только чтение |
| get_pull_diff | Прочитать изменения pull request одним diff | только чтение |
| add_comment | Написать комментарий в pull request | пишет |
Интеграция работает отдельным процессом под собственным пользователем операционной системы: она не видит ключа коннектора, не читает файлы других подключений и не может выйти в сеть мимо коннектора. Подробнее — в разделе о безопасности.
Требования
- Bitbucket Data Center или Server — облачный bitbucket.org это другая интеграция, у него другой API.
- HTTP access token учётной записи бота с правом читать и комментировать нужные репозитории.
- Сетевой доступ от машины с коннектором до Bitbucket — наружу из вашей сети ничего открывать не нужно.
- Коннектор, запущенный с правом заводить отдельного пользователя ОС для интеграции (root или CAP_SETUID).
- Своего трекера задач у Bitbucket DC нет: интеграция работает в pull request. Если задачи у вас в Jira или Redmine — поставьте рядом их интеграцию.
Вопросы
- А задачи? Мы не нашли трекер.
- Его и нет: у Bitbucket Data Center нет собственного трекера задач. Эта интеграция работает в pull request, а для задач поставьте интеграцию того трекера, где они у вас живут.
- Токен Bitbucket уходит к вам в облако?
- Нет. Он хранится на машине с коннектором и не покидает её. Интеграция тоже его не видит: коннектор подставляет токен в исходящий запрос сам.
- Может ли интеграция ходить куда-то, кроме нашего Bitbucket?
- Нет. Наружу она ходит только через коннектор и только по адресу, выведенному из поля настройки, и только по путям REST API. Всё остальное коннектор отклоняет.
- Бот сможет писать в репозитории, которые мы не отмечали?
- Нет. Список отмеченных репозиториев ограничивает и чтение, и запись: обращение из неотмеченного репозитория не запускает работу, а попытка ответить туда отклоняется самим коннектором.
- Вопрос разбирается по ветке pull request или по основной?
- По ветке этого pull request. Обращение приносит репозиторий и ветку, платформа подтягивает свежую копию репозитория и разбирает вопрос на ней. Если репозиторий не подключён к Buff как источник кода, бот ответит по основной ветке и скажет об этом в самом обсуждении.
- Может ли бот начать работу сам, без обращения?
- Нет. Ни аппрув, ни новый коммит, ни смена статуса не считаются обращением — работу начинает только упоминание или команда в комментарии.
- Может ли модель случайно написать в ревью на этапе анализа?
- Нет. Инструменты доступны только на читающих стадиях и только те, что помечены как читающие. add_comment туда не попадает, и проверяет это коннектор у себя.
- Нужно ли открывать порт для вебхуков?
- Не обязательно. Опрос работает всегда и портов не требует; приём вызовов — ускорение для тех, кому есть куда его направить. Порт открывает коннектор, один на все подключения.
Дальше
Подключить Bitbucket Data Center
Поставьте коннектор в своей сети, откройте его локальную страницу и установите интеграцию из каталога. Пересобирать ничего не нужно.
Юрлицам и ИП — оплата переводом по реквизитам и закрывающие документы