Поднимаем собственный git сервер GitBlt на хостинге Openshift

в 14:08, , рубрики: Git, git сервер, GitBlit, java, openshift, Облачные вычисления, халява сэр!, метки: , , , ,

Поднимаем собственный git сервер GitBlt на хостинге Openshift

Привет!
Все программисты делятся на тех, кто использует систему контроля версий, и тех кто ещё ёё не использует. Одной из самых популярных на сегодняшний день, является git. И хотя его структура направлена на децентрализованное хранение данных, все мы пользуемся github, assembla, bitbucket или githost. Главный недостаток этих хостингов, в том, что это чужие проекты, которые в любой момент могут прикрыть ваш аккаунт или слить данные налево. И тут на сцене появляется GitBlit! Git сервер на Java, полностью контролируемый вами, с множеством плюшек и веб-интерфейсом. Сегодня будем запускать его на бесплатном хостинге от Redhat.

Преамбула, можно не читать

Узнав в начале лета про бесплатный хостинг от Redhat, сразу захотел что-нибудь там разместить, однако была проблемка: веб-разработкой не занимаюсь, проектов нет и вроде как ни какой хостинг мне не нужен. Наиболее падок человек на халяву, а это была именно халява, поэтому мой мозг выдал идею: «А давай сделаем свой собственный git сервер!». После гугления я обнаружил только один git сервер на Java, который не только активно разрабатывался, но и мог, по заверениям автора, работать на хостинге openshift. После тестов и введения в активное пользование появилось жгучие желание рассказать о нем всем в округе. Сразу было написано полстатьи, но вдруг наступило лето, и, как следствие, все проекты были заморожены до осени. Осень наступила, я наконец дописал статьи и представляю её на ваш суд.

Чуть-чуть теории, основные особенности.

Описание возможностей честно содрано с сайта и переведено на наш великий и могучий.

Четыре типа конфигураций контроля доступа для каждого хранилища:

  • Анонимный просмотр, клонирование и загрузка в репозиторий
  • Авторизованная загрузка в репозиторий
  • Авторизованные клонирование и загрузка в репозиторий
  • Авторизованные просмотр, клонирование и загрузка в репозиторий
  • Заморозка репозитория (только для чтения)

Основные плюшки:

  • Основано на JGit SmartHTTP сервлете
  • Возможность объединения с другими серверами Gitblit
  • RSS / JSON RPC интерфейс
  • Кроссплатформенный Java Gitblit-менеджер
  • Веб-интерфейс адаптированный для телефонов, планшетов и обычных компьютеров
  • Использование groovy скриптов в хуках перед загрузкой на сервер и после; можно задать действие хуков для отдельного репозитория или глобально, для всех
  • Уведомления по электронной почте после загрузки на сервер (через скрипт sendmail.groovy)
  • Индексация Lucene ветвей репозитория
  • Администраторы могут создавать, редактировать, переименовывать или удалять репозитории, пользователей и группы через веб-интерфейс или интерфейс RPC(менеджер)
  • Владельцам репозитория доступно редактирование через веб-интерфейс
  • Администраторы и владельцы репозитория могут установить главную ветвь через веб-интерфейс или интерфейс RPC
  • LDAP аутентификации и дополнительный LDAP список пользователей
  • Интеграция с gravatar
  • Поддерживается отображения Git тегов
  • Поддерживается отображения GH-страниц (Jekyll не поддерживается)
  • Поддерживается отображения файлов Markdown
  • Статистика ветвей (используется Google Charts)
  • RSS каналы ветвей
  • Поддерживается использование часового пояса браузера при отображении даты и времени
  • Поддерживается скрытие e-mail адресов автора и коммиттера
  • Регистронезависимый поиск по сообщениям коммитов, авторам и коммиттерам
  • Подсветка синтаксиса исходного кода
  • Дополнительные утилиты
  • Страница документации, содержащая все Markdown файлы репозитория
  • Страница Ticgit (на основе последнего выпуска MIT bf57b032 2009-01-27)

Языки:

  • Английский
  • Японский
  • Испанский
  • Польский

Есть желание перевести на Великий и Могучий?
Добро пожаловать на www.getlocalization.com/gitblit/

Скриншоты: gitblit.com/screenshots.html
Демо сервер: demo-gitblit.rhcloud.com

Теперь переходим к практике

Установка

Регистрируемся на openshift
Создаём JBoss Application Server https://openshift.redhat.com/app/console/application_types/jbossas-7
Дальше, следуя инструкциям, добавляем свой ssh-ключ и выполняем git clone.
У меня, например так:

git clone ssh://461e96291a2d2fb96b4423a0a329c7@habr-dark008.rhcloud.com/~/git/habr.git/

Переходим в папку приложения:

cd habr/

Очищаем папку от стандартной заглушки:

rm -R *

Скачиваем gitblit:

wget https://gitblit.googlecode.com/files/express-1.1.0.zip

Разархивируем в папку habr и удаляем архив:

unzip express-1.1.0.zip && rm express-1.1.0.zip

Настраиваем конфиг по адресу: habr/deployments/ROOT.war/WEB-INF/web.xml
Устанавливаем значения true:
web.enableRpcManagement
web.enableRpcAdministration

А у web.forwardSlashCharacter на !

Как здравомыслящие параноики перенаправляем весь трафик через https.
Создаём файл jboss-web.xml в этой же папке (WEB-INF) со следующим содержанием:

<jboss-web>  
      <security-domain>jboss-web-policy</security-domain>  
      <valve>  
        <class-name>org.jboss.web.rewrite.RewriteValve</class-name>  
      </valve>  
</jboss-web>

Создаём файл rewrite.properties в этой же папке (WEB-INF) со следующими правилами переадресации:

RewriteCond %{HTTP:X-Forwarded-Proto} http  
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

На этом настройка серверной части закончена.
Заливаем данные на сервер, выполняя сакральное:

git add .
git commit -m 'Init git server'
git push

Теперь последний этап настройки.

Скачиваем менеджер для удалённого администрирования gitblit: gitblit.googlecode.com/files/manager-1.1.0.zip

Подключаемся к нашему серверу habr-dark008.rhcloud.com, логин и пароль стандартные: admin, admin.
Необходимо лишь сменить пароль администратора, остальные настройки на ваше усмотрение.

Сервер так же можно настроить через веб-интерфейс, но автор советует использовать менеджер: в нём больше настроек, меньше глюков.
Более тонкая настройка: gitblit.com/setup.html

Ссылки

Исходники: github.com/gitblit или code.google.com/p/gitblit/source/list
Баг-трекер: code.google.com/p/gitblit/issues/list
Обсуждение: groups.google.com/group/gitblit
Google+: plus.google.com/114464678392593421684

Спасибо Суворову Андрею за рецензирование текста.

Автор: ddark008


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js