понедельник, 7 октября 2013 г.

Плагин синхронизации задач для redmine

image

Продолжаем допиливать Redmine под свои нужды.

В разное время для нескольких крупных (и не только) клиентов по их желанию были установлены отдельные инстансы redmine.

В основном, они используются для личных нужд клиента: управление репозиториями кода, внутренние задачи.

Но так же в этих трекерах ставились задачи и для системных администратором, то есть для нас.

Проекты росли в своем объеме и количестве, и наступил критический момент, когда сложно стало следить сразу за несколькими трекерами. В то же время, клиенту удобно пользоваться своим трекером, а идти в наш чтобы поставить задачу по администрированию лениво, да и попросту трата лишнего времени.


Ввиду такой ситуации, решили написать силами нашего ruby разработчика kanfet плагин для redmine который бы собирал задачи из всех трекеров в наш.

Под катом описана установка и работа плагина.


Установка и настройка плагина

Установка типовая.

Клонируем плагин с github:



gir clone https://github.com/olemskoi/redmine_synchrony.git /opt/redmine/plugins/redmine_synchrony


и запускаем миграцию:



bundle exec rake redmine:plugins:migrate RAILS_ENV="production"


Перезапускаем Redmine.


Далее, проводим настройку: идем по следующим пунктам меню — «Администрирование» — «Модули».

Там видим наш плагин в списке:

image


Выбираем «Параметры».


Жмем image


Получаем список полей для заполнения:

image


Что есть что:



  • Адрес сайта для синхронизации — url удаленного Redmine, из которого нужно вытаскивать информацию

  • Ключ API — api key пользователя, под которым будет происходить авторизация из нашего Redmine на удаленный. У пользователя должны быть права хотя бы на чтение проекта.

  • Трекер для синхронизации — название трекера на удаленном Redmine. Из этого теркера будет забираться информация о задачах. Чтобы задачи синхронизировались, их нужно ставить именно в этом трекере на удаленном Redmine.

  • Локальный проект для задач — имя проекта в нашем Redmine. В него будут создаваться/обновляться задачи из удаленного трекера.

  • Локальный трекер для задач — имя локального трекера.

  • Язык для создания комментариев — язык комментариев.


После заполнения полей изменения сохраняем.


Добавить можно сколько угодно трекеров.

Есть следующие ограничения:



  • ID проектов в локальном Redmine не должны пересекаться. То есть, синхронизировать в один локальный проект можно только один удаленный.

  • Работает схема для версий Redmine от 2.2.х и выше.


Для работы нам потребуется задача в cron, которая будет инициировать обновление.

В нашем конкретном случае, задача имет такой вот вид:



*/05 * * * * redmine cd /opt/redmine && PATH=/usr/local/bin:$PATH /usr/bin/bundle exec rake -f /opt/redmine/Rakefile redmine_synchrony:issues RAILS_ENV="production" >/dev/null 2>&1


В случае, если настройки плагина неверные, данная задача будет вываливаться с ошибкой. Потому на этапе включения и отладки лучше включить вывод команды в лог-файл.


Принцип работы

Работает плагин по следующей схеме: по cron-таску запускается синхронизация.

Наш локальный Redmine проходит по API на удаленный и смотрит изменения задач в трекере, указанном в поле настроек «Трекер для синхронизации».

Изменения отслеживаются за последние сутки.

В случае создания новой задачи в удаленном Redmine, она создается и в локальном с полным текстом задачи и со ссылкой на оригинальную.

При обновлении задачи на удаленном Redmine на локальном создается комментарий в соответствующей задаче. В тексте комментария указывается смена статуса задачи, пользователь, обновивший ее, приоритет, если он был изменен и сам текст комментария в оригинальной задаче.


Статусы, приоритеты и пользователя пишутся текстом в комментариях по той простой причине, что значения этих параметров на локальном и удаленном redmine не совпадают.


У меня на этом все.

Буду рад советам и пожеланиям.

На основе их будем делать необходимые доработки.

Спасибо за внимание!


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий