Мысль организовать свой процесс более упорядоченно и систематизировано витала давно. Долгое время пользовался бесплатными хостингами проектов, наподобие http://www.assembla.com/ и http://www.xp-dev.com/. В принципе для open-source проектов отличные решения. А вот для приватных проектов - на ассембле придется платить, а на xp-dev нельзя гибко настраивать доступ к проекту, либо полностью открытый проект, либо полностью закрытый от посторонних глаз. А хотелось бы совмещать: что-то открыть (например документацию, timeline), а что-то закрыть (код, внутреннею информацию и т.д). Да и эти хостинги довольно ограничены по возможностям. Платные же сервисы даже не искал, нет желания привязываться к ним.
Т.о. бесплатные хостинги отпали, платные тоже. Остается найти автономную систему, желательно полностью удовлетворяющую моим потребностям.
Требования к системе управления проектами:
- Web-ориентированная - я сам веб-разработчик, и отлично понимаю все плюсы этой архитектуры. Возможность работы с системой через "тонкий"-клиент, распределенность, многопользовательность и т.д и т.п.
- Open source - преимущества очевидны, за опенсурс-системами стоит сообщество, которое всегда поделится опытом, готовыми решениями и процессами. Плюс свобода, поставщик не диктует и не навязывает, можно самому доделать то, что не устраивает.
- Легкость в развертывании - веб-приложения можно писать на чем угодно, но, например, хостинг для .NET или Java более затратен, чем обычные хостинги, ориентированные на веб. А если ставить систему у себя дома, то держать тяжеловесную инфраструктуру накладно. +кросполатформеность (Винда, со своим .NET отпадает сразу). Связка Linux+Apache+PHP+MySql было бы оптимально.
- Управление несколькими проектами, с возможностью подпроектов.
- Удобный интерфейс, ajax-приветствуется, но не до фанатизма, не надо что бы страница грузилась полчаса и лагала.
- Bug-трекинг система - без этого никуда
- Event-система - планирование событий, оповещения (email, icq, twitter и т.д)
- Поддержка SVN или Git
- Wiki - признана лучшим решением для ведения документации.
- Хотелось бы что то типа task board как в agile, только электронной.
Выбор сделан в пользу Redmine
Вот принципе скромный списочек. Процесс выбора конкретной системы расписывать не буду. Скажу кратко, остановил свой выбор на Redmine. Отличные отзывы в интернете. Подходит под практически все требования, плюс поддерживает плагины, коих достаточно много.
Единственный момент, написана на Руби. Хостинг с поддержкой руби конечно не редкость, но и не так распространены, как с поддержкой PHP. Выход, либо платить больше, либо использовать VDS или дедик. Кроме этого, руби я совершенно не знаю, не знаком с архитектурой, не знаю сильные и слабые стороны. С другой стороны, Руби сейчас набирает обороты, все больше и больше разработчиков обращают на него внимание, значит есть за что.
Установка
Отложим пока вопросы, связанные с выбором хостинга. Установим у себя на dev-машине, точнее на рабочем ноуте, довольно со скромными по сегодняшним меркам параметрами: Intel Mobile 1.8Ghz, 1Gb оперативки, винт вроде 5500 оборотов. В качестве ОС стоит Ubuntu 10.04, рабочий стол Gnome. Постоянно запущен apache2, php 5.3, mysql 5.1 +IDE NetBeans 6.9 + браузер + аудиоплейер + еще всякая лабуда. При этом, я не испытываю каких либо неудобств в работе, надеюсь руби не сильно повлияет на мое окружение.
Заходим на сайт Redmine в раздел, с описанием процесса установки. Для установки необходим Ruby и фреймворк Ruby on Rails.
CGI, FastCGI или Apache mod?
В интернете можно найти множество дебатов, что лучше, модуль апача или отдельный интерпритатор. Это относится не только к Руби, для ПХП, все то же самое. Мой выбор - устанавливать как модуль, преимущества CGI-режима, ввиде запуска процесса от имени пользователя и т.д и т.п мне не нужны, мне нужна тесная интеграция с апачем.
Ставим Руби как модуль Апача
В интернете можно найти множество дебатов, что лучше, модуль апача или отдельный интерпритатор. Это относится не только к Руби, для ПХП, все то же самое. Мой выбор - устанавливать как модуль, преимущества CGI-режима, ввиде запуска процесса от имени пользователя и т.д и т.п мне не нужны, мне нужна тесная интеграция с апачем.
Ставим Руби как модуль Апача
Процесс установки приведен для убунты.
Ищем в репозиторях любое упоминание руби и апача
Ищем в репозиторях любое упоминание руби и апача
yugeon@eklmn:~$ apt-cache search ruby | grep -i apache libapache-ruby1.8 - Ruby libraries for mod_ruby libapache2-mod-passenger - Rails and Rack support for Apache2 libapache2-mod-ruby - Embedding Ruby in the Apache2 web server libcatalyst-engine-apache-perl - base class for Apache 1.x and 2.x Catalyst engines passenger-doc - Rails and Rac support for Apache2 - DocumentationВыдало много чего, попробуем разобраться что ставить
- libapache-ruby1.8 - судя по всему мод для апача первой ветки
- libapache2-mod-passenger - что-то связанное с поддержкой Rails, (а мы в курсе что Redmin использует фреймворк Ruby on Rails)
- libapache2-mod-ruby - Встраивает поддержку Руби (возможно то что надо?)
- далее какая то дрянь и дока по passenger
sudo apt-get install libapache2-mod-passengerВсе зависимости автоматически разрулятся APT. Причем все что от нас потребуется - это просто перезапустить апач. Что и делаем.
sudo /etc/init.d/apache2 restartУстанавливаем Ruby on Rails требуемой версии, используя gem - пакетный менеджер для Ruby. Должен автоматом установится, когда ставили мод пассажир.
gem install rails -v=2.3.5
Скачиваем последний стабильный Redmine с SVN
svn co http://redmine.rubyforge.org/svn/branches/1.0-stable ~/sites/projmanager.local
Теперь собственно выполняем шаги, описанные на сайте Redmine.
Сначала создаем БД.
Я сделаю это через phpmyadmin. Расписывать смысла не вижу.
create database redmine character set utf8; create user 'redmine'@'localhost' identified by 'my_password'; grant all privileges on redmine.* to 'redmine'@'localhost';
Настраиваем конфиг с настройками к БД
Собственно для этого копируем файл
./config/database.yml.example
в ./config/database.yml
и исправляем по аналогии в секции productionГенерация сессионного ключа хранилища
Генерация длинного ключа, идентифицирующего сессии пользователей. Необходим для организации кластерной архитектуры.
Генерация длинного ключа, идентифицирующего сессии пользователей. Необходим для организации кластерной архитектуры.
rake generate_session_store
Создаем структуру БД
Для этого переходим в консоле в root-каталог куда установлен redmine и выполняем следующуу команду.
RAILS_ENV=production rake db:migrate
И если вылезет ошибка, типа такой
rake aborted! no such file to load -- mysql
То, значит не хватает каких то модулей для руби.
У меня еще и не хотел модуль mysql компилится, помогла установка dev-пакетов
sudo apt-get install ruby1.8-dev sudo apt-get install libmysqlclient15-dev sudo gem install mysql
Первичное заполнение БД (необезательное, но рекомендуется)
RAILS_ENV=production rake redmine:load_default_data
Настройка прав доступа
Напоминаю, мы все еще в корневом каталоге куда установлен redmine.
mkdir tmp public/plugin_assets sudo chown -R www-data:www-data files log tmp public/plugin_assets sudo chmod -R 755 files log tmp public/plugin_assets
Теперь надо проверить что все работает.
Для удобства, создадим отдельный виртуальный хост projmanager.local, заодно его же и будем использовать для управления проектами.
Включим сайт и перезагрузим конфиг апача
И последнее, добавим строку
Теперь, надо все протестировать. Проверяем что не отвалился php_mod, а то в некоторых источниках утверждается что при установки мода passenger, отваливается модуль php5. Пишем простой скриптик info.php, кидаем в корень сайта и запускаем
Ничего не отвалилось, ну и отлично, набираем в браузере http://projmanager.local появляется главная страница свежеустановленного Redmine. Первые впечатления: интерфейс удобный, простой, интуитивный. Система просто летает, правда первый запуск довольно продолжительный, видимо связано с тем, что все приложение грузится в память.
Устанавливаем плагин для agile
Установка по инструкции, проблем не вызвала, правда была ошибка при миграции, когда пыталась удалится несуществующая таблица, но она не существенная, т.к это последние этапы миграции.
Ссылки по теме
http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems
Выбор на хабре с интересными комментами
Agile/Scrum плагин для Redmine
mkdir ~/sites/projmanager.local mkdir ~/sites/projmanager.local/public sudo touch /etc/apache2/sites-available/projmanager sudo nano /etc/apache2/sites-available/projmanagerСодержимое файла projmanager
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName projmanager.local DocumentRoot /home/yugeon/sites/projmanager.local/public <Directory /home/yugeon/sites/projmanager.local/public> AllowOverride All Order allow,deny allow from all Options -MultiViews </Directory> </VirtualHost>
Включим сайт и перезагрузим конфиг апача
sudo a2ensite projmanager sudo /etc/init.d/apache2 reload
И последнее, добавим строку
127.0.0.1 projmanager.local
в /etc/hosts
, что бы удобно было обращаться к сайту из браузера.Теперь, надо все протестировать. Проверяем что не отвалился php_mod, а то в некоторых источниках утверждается что при установки мода passenger, отваливается модуль php5. Пишем простой скриптик info.php, кидаем в корень сайта и запускаем
echo "<?php phpinfo();">~/sites/projmanager.local/public/info.php
Ничего не отвалилось, ну и отлично, набираем в браузере http://projmanager.local появляется главная страница свежеустановленного Redmine. Первые впечатления: интерфейс удобный, простой, интуитивный. Система просто летает, правда первый запуск довольно продолжительный, видимо связано с тем, что все приложение грузится в память.
Устанавливаем плагин для agile
Попробывал только два плагина: Redmine_backlogs и Scrum PM
Оба не без изъянов. Scrum PM заточен под redmine версии 0.9 и не поставился на 1.0.
Redmine_backlogs в ообщем то не так плох, только навигация мудреная. Пощупать можно тут логин и пароль demo. Так же на сайте есть скринкасты.
Принцип работы следующий. Создается два трека: один для пользовательских историй, другой для тасков. Для создания спринта служит версия. Т.е. для каждого спринта необходимо в настройках проекта, создавать новую версию, что логично.
Соответственно, продукт овнер создает пользовательские истории. Которые можно раскидать по спринтам (версиям). Каждой пользовательской истории можно назначит приоритет и оценить в поинтах. Все это делается на 1 экране (backlog), перемещение довольно удобное, с помощью drag'n'drop.
Для каждого спринта своя task board, на которой можно создавать задачи, назначать ответственного и перемещать их по стадиям. Для задачи можно назначить ответственного и оценить в часах. Для системы, каждая задача, является подзадачей пользовательской истории. При перемещении задачи в колонку Done задача автоматически закрывается и считается выполненой. Правда, после того как все задачи пользовательской истории сделаны, сама пользовательская история автоматически не переходит в статус закрытой.
Установка по инструкции, проблем не вызвала, правда была ошибка при миграции, когда пыталась удалится несуществующая таблица, но она не существенная, т.к это последние этапы миграции.
Ссылки по теме
http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems
Выбор на хабре с интересными комментами
Agile/Scrum плагин для Redmine
К фф есть удобный плагин, который облегчает навигацию по редмайн проектам. Называется Redmine Toolbar. https://addons.mozilla.org/de/firefox/addon/11545/
ОтветитьУдалитьПользуюсь Redmine уже почти месяц, отличная вещь. Во многом превосходит все инструменты которые я видел!
ОтветитьУдалитьСпасибо за статью, думаю она многим поможет. Хочу поделиться RMClient для тех, кто планирует проекты с помощью Redmine. Мы разработали таймер для учета времени в системе Redmine, он доступен для скачивания после короткой регистрации. Будем очень признательны за его использование и помощь в тестировании.
ОтветитьУдалить