Задача: Проработать шаги по настройке связки Redmine 3.4.4 и системы контроля версий базирующейся на Mercurial, плюс при создании проекта именем проекта именовался репозитарий и доступ к нему через Webинтерфейс только тем кто обозначен в Redmine правами доступа. Откуда такой интерес? Просто когда я был на одном из собеседовании то в вакансии было требование работа используя связку Redmine + GIT (данную связку я проработаю обязательно и постараюсь опубликовать в следующих заметках), а я рассказал о своем опыте описанном в этой заметке. Главное принцип один и тот же, значит вникнуть как используется на рабочем месте я смогу.

Все работает от 08.05.2019

Шаг №1: tips_ubuntu_18_04_redmine_v1.odt

Шаг №2: Устанавливаю на систему необходимые пакеты уже после развернутой из заметки Redmine on Ubuntu 18.04.

Шаг №3: Поднимаю связку Mercurial + Web интерфейс, в основе шаги из заметки:

Открываю Web-страницу http://IP&DNS доступа в Redmine, авторизуюсь:

  • Login: admin
  • Pass: Aa1234567

перехожу «Администрирование» — «Настройки» — «Хранилища» и привожу «Включенные SCM» к виду где стоит отметка галочкой у системы хранения версий Mercurial, у всех других галочку снимаю и нажимаю «Сохранить». Как видно у меня Mercurial версии 4.5.3

Отмечаю систему хранения версий Mercurial для Redmine 3.4.4

Репозитории будут доступны по адресам http://[my
site or ip]/hg/*. Например, для проекта project адрес будет таким http://[my
site or ip]/hg/project. Если у проекта project будет подпроект subproject1, то его репозиторий будет доступен по адресу http://[mysite or ip]/hg/project/subproject1.

Создаю первый проект:

«Проекты» - «Новый проект»

  • Имя: example

и нажимаю «Создать», затем зайти в созданный проект «example», перейти в «Настройки» — «Участники» — «Новый участник» и добавить необходимых, в рамках изучения добавляю группу «Redmine Admin» и отмечаю роли: Manager & Developer. После нажимаю «Добавить»

После создаю «Новое хранилище» для созданного проекта, для этого перехожу в настройку «Хранилища» — «Новое хранилище»:

  • Тип хранилища: Mercurial
  • Хранилище по умолчанию: отмечаю галочкой
  • Уникальный идентификатор: example (к примеру в честь названия проекта)
  • Путь к хранилищу: /hg/example
  • Кодировка пути: UTF-8

и нажимаю «Создать»

Теперь создаю вручную репозитарий на Ubuntu 18.04 Server где развернут Mercurial + Redmine и инициализирую:

После проверяю, что могу зайти в через Web в репозитарий проекта: http://IP&DNS/hg/example авторизуюсь под учетными данные которые имеют доступ в созданный проект, т. к. я создал под учетной записью admin то их и указываю:

Пробую обратиться к репозитарию через Web-интерфейс

Нажимаю «Вход», но почему-то не пустило

Не пускает в репозитарий по имени проекта

Нужно было в hg.conf поправить <Directory hg> на <Directory /var/www/html/hg>, после сохранить внесенные изменения и перезапустить Apache2:

ekzorchik@srv-bionic:~$ sudo systemctl restart apache2 && sudo systemctl status apache2 | head -n5

Затем нажав клавишу F5 у меня отобразился Web-доступ к репозитарию:

Исправление конфигурационного файла и после F5 я внутри репозитария по имени проекта

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

Шаг №4: Вот только это все в ручную, хотелось бы чтобы при создании проекта репозитарий создавался автоматически, разберу сейчас:

http://IP&DNS — user&pass — Администрирование — Настройки — Хранилища

  • Автоматически следить за изменениями хранилища: отмечаю галочкой
  • Включить веб-сервис для управления хранилищем: отмечаю галочкой

нажимаю «Сгенерировать ключ» и напротив настройки

API ключ: появится сгенерированный ключ: 2ziknMZ8XHv5twS4OczR

Разрешить ссылаться и исправлять задачи во всех остальных проектах: отмечаю галочкой

Включить учет времени: отмечаю галочкой

и нажимаю «Сохранить»

На заметку: Когда включили веб-сервис следует внести изменения в hg.conf

После не забываем сохранить внесенные изменения.

Узнаю синтаксис: /usr/share/redmine/extra/svn/reposman.rb —help

Пробую сперва запустить чтобы строка отработала:

Шаг №5: Создадим задание на запуск скрипта каждую минуту тем самым проверяя если есть новый проект, а под него предопределено хранилище то его нужно создать:

Проверяю, как создастся репозитарий если я создам проект и предопределю для него репозитарий Mercurial:

Смотрю логи, и вижу что чего-то не хватает, устанавливаю:

вот с этой версией 3.2.22.1 все заработало.

Правильная строчка: от 08.05.2019

Шаг №6: Как работает создание репозитария для проекта:

http://IP&DNS — user&pass (admin&712mbddr@) - Проекты — Новый проекта

  • Имя: aka_ekzorchik
  • Уникальный идентификатор: aka_ekzorchik

и нажимаю «Создать» , затем перехожу в «Участники» — «Новый участник» , отмечаю группу «Redmine Admin» и отмечаю обязательные роли «Manager, Developer» и нажимаю «Добавить». Переходить в настройку «Хранилища» не нужно. Скрипт сам создаст репозитарий, в файле журнала будет

Также и доступ в Mercurial репозитарий через Web-интерфейс

Репозитарий по имени проекта создался автоматически - цель достигнута

Отлично работает. От 08.05.2019. Чего я добился выше указанными действиями, при использовании Redmine, когда создается проект в автоматическом режиме создается репозитарий по имени проекта, также можно через Web-интерфейс зайти в созданный репозитарий проекта. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору.