Git и Redmine. Элегантное решение для совместной работы над проектами::Журнал СА 4.2011
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6143
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6856
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4139
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2978
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6282
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3433
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12336
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13968
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9099
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7052
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5361
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4593
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3400
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3127
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3378
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 2999
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Git и Redmine. Элегантное решение для совместной работы над проектами

Архив номеров / 2011 / Выпуск №4 (101) / Git и Redmine. Элегантное решение для совместной работы над проектами

Рубрика: БИТ. Бизнес & Информационные технологии /  Продукты и решения

Сергей Романов СЕРГЕЙ РОМАНОВ,  генеральный директор ООО «Ред Кейс»

Git и Redmine
Элегантное решение для совместной работы над проектами

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

Сегодня существует ряд бесплатных систем, позволяющих как ставить задачи и вести проекты, так и просматривать хранилище исходного кода. Рассмотрим наиболее полноценные:

  • Bugzilla – неплоха, весьма популярна, но по удобству пользования и внешнему виду довольно архаична [1]. Нет wiki, линии времени, диаграммы Ганта и т.д.
  • Bugtracker.NET – на первый взгляд приятен, и набор функций хорош, но использует .NET и работает только под Windows [2].
  • Trac – вызывает уважение как система с полным набором современных функций трекинга и ведения проектов, но вот за удобство интерфейса не заслужил симпатии [3]. Плюс работа с несколькими проектами требует довольно нетривиальных телодвижений, в частности, создания отдельного окружения для каждого нового проекта. Когда их три – пять это еще терпимо, но если 30-50, а то и 150?
  • Redmine – умеет все, что можно желать от системы ведения проектов и контроля версий [4], обладает интерфейсом, вызывающим восторг (см. рис.1), – продуманность разделов, Ajax-меню по правому клику мыши там, где это нужно, а также очень удобно организованное хранилище (см. рис. 2).

Рисунок 1. Интерфейс Redmine

Рисунок 1. Интерфейс Redmine

Рисунок 2. Хранилище  Redmine

Рисунок 2. Хранилище  Redmine

По всем своим возможностям Redmine показался более подходящим для нашей задачи, теперь разберем, как настроить связку Redmine и распределенной системы управления версиями файлов Git [5]. В Git, в частности, трудятся разработчики Facebook, ядра Linux, языка Perl, OS Android и т.д. (Redmine используют разработчики языка Ruby, среды KDE, форумного движка phpBB, веб-сервера Lighttpd и т.д.).

Нам потребуется

Компьютер под управлением Linux (для ознакомления и тестов мы используем Ubuntu 10.10 Desktop [6]) с правами root. Для того чтобы выполнить запрос от имени суперпользователя, предусмотрена команда sudo.

Установка зависимости

Кроме Git и Redmine, нам потребуется Apache2 с модулем passanger и БД sqlite3. Также для удобства работы установим mc.

$ sudo apt-get install apache2 libapache2-mod-passenger sqlite mc

Теперь основное, устанавливаем Redmine:

$ sudo apt-get install git git-core redmine redmine-sqlite

Соглашемся с предложением настраивать Redmine через dbconfig-common, тип БД выбираем sqlite3.

Настройка

Создадим символическую ссылку на папку установки, дадим права и поднастроим веб-сервер:

$ sudo ln -s /usr/share/redmine/public /var/www/redmine
$ sudo chown -R www-data:www-data /var/www/redmine
$ sudo echo "RailsBaseURI /redmine" > /etc/apache2/sites-available/redmine
$ sudo a2ensite redmine
$ sudo service apache2 restart

Настроим почтовую подсистему (мы используем Exim4 [7] с использованием шаблона Internet Site):

$ sudo apt-get install exim4
$ sudo cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml

Если при установке пакета не будет вопроса о конфигурации, то запустите то запустите команду:

sudo dpkg-reconfigure exim4-config

Отредактируйте созданный файл настройки почты /etc/redmine/default/mail.yml, измените в нем метод достаки почты, поменяв smtp на sendmal:

production:
 delivery_method: :sendmail
 smtp_settings:
 address: smtp.example.net
 port: 25
 domain: example.net
 authentication: :login
 user_name: "redmine@example.net"
 password: "redmine"

Перезапустите веб-сервер:

$ sudo service apache2 restart

Администрирование

Для регистрации в админке Redmine используем адрес http://localhost/redmine. По умолчанию интерфейс английский, чтобы сменить язык на русский, переходим в Administration –> Options –> вкладка Display. Таким образом, изменится язык по умолчанию для новых пользователей, необходимо также посетить Users –> Admin –> General и выбрать русский язык для администратора.

Также загляните во вкладку Email Notifications («Уведомления по почте»), чтобы настроить исходящего адресата и параметры генерируемого письма.

В разделе Repositories («Хранилища») отключите поддержку ненужных типов репозиториев, в нашем случае оставьте только Git. Остальные настройки здесь трогать не надо.

Теперь сервер Redmine готов к заполнению контентом.

Работа с проектами

Для начала работы над первым проектом нужно:

  • создать учетные записи пользователей;
  • создать проект, включить туда необходимых пользователей;
  • создать внутри настроек проекта новую (первую) версию.

Теперь внутри проекта появилась вкладка «Оперативный план», в которой мы видим, что пока нет задач, связанных с текущей версией.

Смело нажимаем «Новая задача», заполняем необходимые поля и обязательно указываем версию, к которой нужно привязать задание.

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

Далее, если зайти в созданное задание и нажать «Обновить», можно писать новые комментарии, которые выстроятся в ленту снизу. При обновлении задачи доступен функционал, позволяющий присоединять файлы, менять ответственного, версию, выставлять затраченное время и многое другое.

Промежуточный итог

Итак, мы развернули полномасштабную систему менеджмента, которая наряду со стандартными функциями (проекты, задачи) несет еще множество «вкусностей» (диаграмма Ганта, Вики, документация, новости и т.д.). Теперь пора переходить к «магической» части – настроим связку Redmine и системы контроля версий Git, для того чтобы отслеживать в интерфейсе Redmine, написанный разработчиками код и его версии.

Подключаем «машину времени»

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

В больших проектах более удобен HTTPS-протокол средствами Apache WebDAV и htaccess [8].

Создадим иерархию каталогов для проектов и учетную запись пользователя в системе.

$ sudo adduser commiter --home /var/gitrepos/
$ sudo mkdir /var/gitrepos/superprogram

Система задаст несколько несложных вопросов, и пользователь будет создан.

Допустим, на сервере уже есть наработки по проекту (в примере это readme-файл), их нужно положить в каталог нашего проекта и дать полные права пользователю commiter:

$ sudo cp /home/pupkin/proga/readme.txt /var/gitrepos/superprogram
$ sudo chmod -R 755 /var/gitrepos

Перейдем в каталог с проектом и инициализируем новый репозиторий. Затем добавим в него существующие файлы и применим изменения. Система всегда просит ввести комментарии касательно сделанных правок, просто впишем «Начало работы с Git»:

$ sudo cd /var/gitrepos/superprogram
$ sudo git init && git config --global core.editor mcedit
$ sudo git update-server-info
$ sudo git add *
$ sudo git commit -a

Теперь подключаем репозиторий к проекту внутри Redmine. Для этого идем внутри проекта в «Настройки –> Хранилище». Выбираем тип – git. Пишем путь – /var/gitrepos/superprogram/.git/.

Теперь мы видим файлы и историю их изменения на странице Хранилище внутри проекта!

Обращаю ваше внимание, что, открыв файл в хранилище, можно просмотреть, кто и когда изменял определенные строки. Или же вы можете видеть, например, сколько новых строк кода написал программист за то время, что он потратил на создание нового функционала.

Совместная работа с репозиторием

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

Иван устанавливает поддержку Git, mc и производит обязательную базовую настройку:

ivan$ sudo apt-get install git git-core
ivan$ git config --global user.name "Имя Фамилия"
ivan$ git config --global user.email "электронная почта"
ivan$ git config --global core.editor mcedit

Далее он выполняет на своем компьютере (существуют также графические оболочки для Windows и Linux-систем, а также интеграция внутри IDE наподобие NetBeans, Eclipse и т.д.) команды для создания каталога, где он хочет у себя хранить файлы проекта, и для получения актуальной версии проекта из репозитория.

ivan$ mkdir /home/ivan/projects
ivan$ cd /home/ivan/projects
ivan$ git clone ssh://commiter@ВАШ_АДРЕС/superprogram/

В каталоге projects появился новый подкаталог superprogram с копией проекта и соответственно файлом readme.txt.

После того как он сделал необходимые изменения в файле или создал новые, он может применить (сделать commit) и затем загрузить их на сервер – элегантно и просто:

ivan$ mkdir /home/ivan/projects/superprogram
ivan$ git add *
ivan$ git commit -a
ivan$ git push

Система спросит пароль пользователя commiter и загрузит изменения на сервер, которые тут же отравятся в Redmine.

Важно: для удобства работы в Redmine во время commit при вводе комментария скопируйте туда целиком название задачи с номером, например: «Доработки по Изменение #1: Разработать главное диалоговое окно программы» и тогда в хранилище внутри Redmine ваш комментарий станет кликабельным и будет вести на настоящую задачу.

Назад в будущее и параллельные реальности Git

Git скрывает в себе великое множество функций, связанных с версионностью содержимого, поддержкой ветвления разработки кода (скажем, ветка STABLE и DEVELOPMENT), возможностью отката назад и вперед во времени и многое другое, что никак не поместится в эту статью.

Теперь рассмотрим основы ветвления. По умолчанию создается одна ветка master, в которой вы и находитесь. Чтобы создать новую и перейти к ней, выполним следующие команды:

ivan$ git branch vetka2
ivan$ git chekout vetka2

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

Чтобы откатиться до определенного состояния, можно просто заглянуть в раздел Хранилище, посмотреть уникальный номер редакции (например, e3feba7) и перейти к нему, что создаст новую временную ветку от этого момента времени.

ivan$ git chekout e3feba7

***

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

Все участники проекта всегда в курсе происходящего в режиме реального времени благодаря системе оповещения по почте (также есть поддержка RSS, Atom, Twitter). Диаграмма Ганта помогает планировать свое время (см. рис. 3).

Рисунок 3. Диаграмма Ганта

Рисунок 3. Диаграмма Ганта

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

Руководство получает защиту от больших потерь денег и интеллектуальной собственности.

И самое приятное – система обладает несметным количеством встроенных функций, позволяющих ускорить работу над проектом, также доступно множество плагинов и интеграций – все это почва для изучения и развития себя как системного администратора!

  1. Сайт Bugzilla – http://git-scm.com.
  2. Сайт Bugtracker – http://ifdefined.com/bugtrackernet.html.
  3. Сайт Trac – http://trac.edgewall.org.
  4. Сайт Redmine – http://www.redmine.org.
  5. Сайт Git – http://git-scm.com.
  6. Сайт ОС Ubuntu Linux – http://ubuntu.com.
  7. Сайт почтовой системы Exim– http://www.exim.org.
  8. Настройка Git через WebDav – http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt.

Комментарии
 
  09.10.2013 - 06:03 |  forforce

Чтобы легко можно было учитывать время в redmine можно использовать http://rmclient.org
Rmclient совместим c Redmine 2.3.1 и поддерживается на Windows, Mac OS. Прост и удобен, обновляется и бесплатный! Приятного пользования.

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru