# Redmine — интеграция для Buff

> Вопросы и ответы прямо в задачах Redmine — в трекере, который у вас уже стоит и никуда не переезжает.

[Маркетплейс](https://buff.systems/marketplace) Redmine

# Redmine

Трекеры задач · издатель buff · версия 1.0.4

Вопросы и ответы прямо в задачах Redmine — в трекере, который у вас уже стоит и никуда не переезжает.

[Скачать коннектор](https://buff.systems/downloads) [Как установить](https://buff.systems/#usage) 2 из 3 инструментов только читают

- Ответ приходит комментарием в ту же задачу.
- Форма настройки строится по схеме, которую интеграция объявляет о себе.
- Подключение работает: свой процесс, свой набор инструментов, свой разрешённый адрес.
- Проверка связи говорит не «ок», а под какой учётной записью вошли и сколько проектов в области.
- Что интеграция получит, видно в каталоге коннектора до установки.

Нажмите на снимок, чтобы открыть его целиком. Все снимки — с работающей установки.

## Обзор

Интеграция связывает Buff с вашим Redmine изнутри вашей же сети. Команда продолжает работать там, где привыкла: в задаче. Buff читает задачу вместе с обсуждением, отвечает комментарием туда же и, если попросили, заводит задачу разработки со ссылкой обратно. Код при этом берётся из ваших репозиториев — они подключаются к Buff отдельно, как источник кода.

## Сценарии

Ситуации, ради которых его ставят.

- ### Вопрос по коду, не выходя из задачи Тестировщик завёл задачу «экспорт в CSV ломается на кириллице» и не знает, где копать. Разработчик занят, а ответ нужен сегодня. Результат. Он упоминает бота в комментарии. Через несколько минут в задаче лежит разбор: где формируется выгрузка, почему теряется кодировка и что придётся менять. Никто не переключался в другой интерфейс.
- ### Задача разработки из обсуждения В задаче двадцать комментариев, половина требований появилась по ходу, и переписывать постановку заново никому не хочется. Результат. Buff читает задачу целиком, вместе с журналом, и заводит по ней черновик задачи разработки. Ссылка возвращается комментарием, так что Redmine остаётся единственным местом, куда смотрит команда.
- ### Это уже было — найти, где именно Пришла задача, подозрительно похожая на прошлогоднюю. Искать вручную по всем проектам долго. Результат. Интеграция ищет по отмеченным проектам и приносит связанные задачи: дубликаты, прошлые обращения по той же подсистеме, задачи, на которые опирается текущая — со ссылками.
- ### Ответ там, где его ждут Заказчик задачи не заходит в интерфейс Buff и не собирается. Ему нужен ответ в задаче, которую он открыл. Результат. Готовый разбор или ссылка на задачу разработки приходит комментарием в исходную задачу. Единственный инструмент интеграции, который что-то пишет, — и он недоступен на стадиях, где модель только читает.

## Примеры

Что написать и что придёт в ответ. Обращение к боту задаётся в настройках подключения — здесь это «@buff».

1. @buff, разберись, почему при экспорте в CSV ломается кириллица комментарий в самой задаче инструмент: `get_issue` Прочитал задачу целиком, вместе с обсуждением, и разобрал по коду. Выгрузка собирается в ExportService.buildCsv, файл отдаётся без BOM и с заголовком text/csv без charset — Excel в Windows читает такой файл в cp1251. Разбор с местами в коде приложил документом и продублировал ссылкой сюда.
2. /research откуда берётся задержка в отчёте комментарий в задаче — так запускается глубокое исследование инструмент: `get_issue` Слово после обращения выбирает работу: без него — короткий ответ, «research» — глубокое исследование с документом, «task» — черновик задачи разработки. Привычная команда через слэш тоже работает.
3. @buff, найди задачи про кеширование каталога комментарий в любой задаче отмеченного проекта инструмент: `search_issues` Нашёл 4 задачи по кешированию: • catalog#218 «Кеш каталога не сбрасывается после смены цены» — закрыта • catalog#341 «Пустые ответы первые 30 секунд после деплоя» — закрыта, прогрев кеша • catalog#402 «Дубли в выдаче после инвалидации» — открыта, похожа на текущую • ops#77 «Redis выедает память на выгрузках» — открыта, обсуждение про TTL
4. @buff, что уже обсуждали в этой задаче? комментарий в задаче с длинной перепиской инструмент: `get_issue` Краткая выжимка обсуждения: что просили изначально, какие требования добавились по ходу и в каком комментарии, о чём договорились и что осталось нерешённым. Полезно, когда задаче полгода и в её журнале тридцать записей.

## Что умеет

### Читает задачу целиком, а не заголовок

get\_issue отдаёт модели описание и весь журнал задачи. Это то, из чего складывается настоящая постановка: в заголовке «не работает поиск», а в третьем комментарии — что именно и на каких данных. Инструмент только читает.

### Ищет по отмеченным проектам

search\_issues ходит по проектам, которые вы отметили, и находит связанные задачи — дубликаты, прошлые обращения по той же подсистеме, задачи, на которые опирается текущая. Тоже только чтение.

### Отвечает в той же задаче

add\_comment пишет ответ в исходную задачу: разбор вопроса или ссылку на задачу разработки. Это единственный инструмент интеграции, который что-то меняет, — и он недоступен на стадиях, где модель только читает. Проверяет это коннектор у себя.

### Узнаёт свои же ответы

В журнале Redmine у записи есть только отображаемое имя автора — логина там нет вовсе. Интеграция знает, как её зовут, и поэтому не принимает собственный ответ за новый вопрос. Мелочь, без которой бот отвечал бы сам себе бесконечно.

### Берётся за работу только по обращению

Смена статуса, приоритета или исполнителя не запускает ничего: их делают правила и массовые правки, и работа, которую никто не заказывал, всё равно была бы оплачена. Назначение задачи на учётную запись бота — это обращение, но и оно бывает автоматическим, поэтому включается отдельной настройкой. Список отмеченных проектов и есть контроль доступа: внутри них позвать бота может любой участник, за их пределами — никто.

## Как пользоваться

Всё происходит на машине, где стоит коннектор. Открывать доступ к вашей сети снаружи не нужно ни на одном шаге.

1. Шаг 1 ### Установка занимает одно нажатие Откройте раздел «Маркетплейс» на локальной странице коннектора. До установки видно, что интеграция получит: адреса, по которым она сможет ходить, какие учётные данные попросит и сколько инструментов увидит модель. Коннектор скачивает подписанный бандл из нашего реестра и проверяет подпись до того, как что-то запишет на диск. **Коннектор** Границы доступа видны в каталоге до установки.
2. Шаг 2 ### Настройка — адрес, ключ и список проектов Нужен адрес вашего Redmine, ключ API учётной записи бота и идентификаторы проектов — то, что стоит в адресе проекта. Ключ Redmine принимает только в своём заголовке, и коннектор подставляет его сам: интеграция ключа не видит. В самом Redmine не забудьте включить REST API (Администрирование → Настройки → Аутентификация). **Коннектор** Форма настройки строится по схеме интеграции.
3. Шаг 3 ### Заведите боту отдельную учётную запись Дайте ей участие только в тех проектах, где бот должен отвечать: права учётной записи — это внешняя граница, а список отмеченных проектов — внутренняя. Роли с правом просмотра и комментирования достаточно; администратором бот быть не должен.
4. Шаг 4 ### Код подключается отдельно Redmine — трекер задач, репозиториев он для нас не отдаёт. Чтобы бот отвечал по вашему коду, репозитории подключаются к Buff как источник кода — тем же коннектором, в разделе «Репозитории». Одно без другого работает: бот сможет читать задачи и отвечать в них, просто без разбора по коду.
5. Шаг 5 ### То же самое из командной строки Установка без графики равноправна, а не запасной вариант: \`connector install redmine\`, затем \`connector instance add redmine --config base\_url=… --config projects=catalog\`. На сервере без иксов вы делаете то же самое и получаете тот же результат.
6. Шаг 6 ### События приходят сами После настройки ничего запускать не нужно: интеграция сама следит за отмеченными проектами и приносит обращения. Портов открывать не требуется — Redmine своих вызовов не шлёт, и всё держится на опросе, который идёт только наружу из вашей сети. **Коннектор** Каждое подключение — отдельный процесс со своим набором инструментов.

## Границы доступа

То же самое коннектор показывает на вашей машине до установки. Список берётся из подписанного каталога, а не написан здесь руками.

Ходит наружу

только по адресам из полей `base_url`

Учётные данные

api — значения остаются в коннекторе, интеграция их не видит

Вебхуки

не принимает

| Инструмент | Что делает | Доступ |
| --- | --- | --- |
| search\_issues | Найти задачи по тексту — когда упомянут номер или нужен контекст из трекера | только чтение |
| get\_issue | Прочитать задачу с обсуждением — когда нужны требования или ход обсуждения | только чтение |
| add\_comment | Написать комментарий в задачу | пишет |

Интеграция работает отдельным процессом под собственным пользователем операционной системы: она не видит ключа коннектора, не читает файлы других подключений и не может выйти в сеть мимо коннектора. Подробнее — в [разделе о безопасности](https://buff.systems/security).

## Требования

- Redmine с включённым REST API (Администрирование → Настройки → Аутентификация → «Включить REST-веб-сервис»).
- Ключ API учётной записи бота, участвующей в нужных проектах (администратором бот быть не должен).
- Сетевой доступ от машины с коннектором до Redmine — наружу из вашей сети ничего открывать не нужно.
- Коннектор, запущенный с правом заводить отдельного пользователя ОС для интеграции (root или CAP\_SETUID).
- Разбор по коду требует, чтобы репозитории были подключены к Buff отдельно: Redmine репозиториев не отдаёт.

## Вопросы

- **Ключ Redmine уходит к вам в облако?**: Нет. Он хранится на машине с коннектором и не покидает её. Интеграция тоже его не видит: коннектор подставляет ключ в исходящий запрос сам — в тот заголовок, который Redmine ожидает.
- **Может ли интеграция ходить куда-то, кроме нашего Redmine?**: Нет. Наружу она ходит только через коннектор и только по адресу, выведенному из поля настройки, и только по путям API. Всё остальное коннектор отклоняет.
- **Бот сможет писать в проекты, которые мы не отмечали?**: Нет. Список отмеченных проектов ограничивает и чтение, и запись: обращение из неотмеченного проекта не запускает работу, а попытка ответить туда отклоняется самим коннектором. Права учётной записи бота — вторая, независимая граница.
- **Нужно ли открывать порт?**: Нет. Redmine своих вызовов не присылает, поэтому интеграция работает опросом: коннектор ходит наружу сам, и никаких входящих соединений не требуется.
- **Может ли бот начать работу сам, без обращения?**: Нет. Смена статуса, приоритета или исполнителя не считается обращением: их делают правила и массовые правки, и это привело бы к работе, которую никто не заказывал, но за которую выставлен счёт. Назначение задачи боту — обращение, но оно тоже бывает автоматическим, поэтому по умолчанию выключено.
- **Может ли модель случайно написать в задачу на этапе анализа?**: Нет. Инструменты доступны только на читающих стадиях и только те, что помечены как читающие. add\_comment туда не попадает, и проверяет это коннектор у себя, а не мы у себя.
- **А если бот ответит сам себе?**: Не ответит. В журнале Redmine у записи есть только отображаемое имя автора, и интеграция узнаёт по нему свои же ответы. Это единственный способ отличить их — логина в журнале нет.
- **Как быстро приходит ответ?**: Обращение принимается в пределах интервала опроса — это секунды-десятки секунд; сам ответ занимает столько, сколько занимает работа.

Коротко

- **Версия**: 1.0.4
- **Издатель**: buff
- **Обновлён**: 2026-09-06
- **Размер**: 18 КБ
- **Инструментов**: 3, только читают 2
- **Учётные данные**: api
- **Вебхуки**: не принимает
- **Платформы**: linux-x86\_64, linux-aarch64

[Документация коннектора](https://buff.systems/docs/connector) [Как это устроено с точки зрения ИБ](https://buff.systems/security) [Задать вопрос об интеграции](https://buff.systems/contact)

На этой странице

- [Обзор](https://buff.systems/#overview)
- [Сценарии](https://buff.systems/#use-cases)
- [Примеры](https://buff.systems/#examples)
- [Что умеет](https://buff.systems/#abilities)
- [Как пользоваться](https://buff.systems/#usage)
- [Границы доступа](https://buff.systems/#access)
- [Требования](https://buff.systems/#requirements)
- [Вопросы](https://buff.systems/#faq)

Дальше

## Подключить Redmine

Поставьте коннектор в своей сети, откройте его локальную страницу и установите интеграцию из каталога. Пересобирать ничего не нужно.

[Скачать коннектор](https://buff.systems/app) [Написать нам](mailto:info@buff.systems)

Юрлицам и ИП — оплата переводом по реквизитам и закрывающие документы
