Я столкнулся с тем, что репозитории разбросаны по разным серверам с разными настройками без возможности централизованного управления и мониторинга.
Возникла идея сделать одно место хранения со следующими требованиями:
- авторизация пользователя через Active Directory
- уведомления по электронной почте о push-уведомлениях
- управление и создание репозиториев, а также контроль доступа через веб-интерфейс
- возможность размещать Mercurial, git, svn
- простота развертывания
- Поддержка SSL
Сервис реализован на Debian 8.3 x64.
Ниже описан процесс установки и настройки:
1. Установка Mercurial и SCM-Manager
Установите Mercurial и доп.пакеты:
Перейдем в директорию, куда будем устанавливать SCM-Manager:sudo apt-get install mercurial ca-certificates default-jre
cd .
Загрузите последнюю версию с Официальный веб-сайт :
sudo wget https://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm//scm-server/1.46/scm-server-1.46-app.tar.gz
Разархивируем:
sudo tar -xvf scm-server-1.46-app.tar.gz
Удалите скачанный архив:
sudo rm scm-server-1.46-app.tar.gz
Запускаем SCM-Менеджер:
sudo /opt/scm-server/bin/scm-server start
На данном этапе сервис полностью функционален и готов к работе в базовой конфигурации.
Веб-интерфейс доступен по адресу: локальный хост :8080. Логин и пароль администратора по умолчанию: scmadmin. Но продолжим настройку.
2. Автозагрузим SCM-Manager
Создайте файл /etc/init.d/scmserver: sudo mcedit /etc/init.d/scmserver
В созданный файл введите следующее:
#!/bin/sh
### BEGIN INIT INFO
# Provides: sscmserver
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Seapine Surround SCM Server
# Description: SCM Server init file
### END INIT INFO
SCM_SERVER="<b><i>*path_to_install_directory*</i></b>/scm-server/bin/scm-server"
start() {
"$SCM_SERVER" start
}
stop() {
"$SCM_SERVER" stop
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 2
esac
Исправим права, чтобы файл был исполняемым:
sudo chmod 755 /etc/init.d/scmserver
Добавить в автозагрузку:
sudo update-rc.d scmserver defaults
3. Перенос сервиса на другой порт
По умолчанию веб-интерфейс доступен по http на порту 8080. Для изменения необходимо выполнить следующие действия.
Отредактируйте файл server-config.xml: sudo mcedit /***path_to_install_directory***/scm-server/conf/server-config.xml
Ищем раздел: <set name="port">
<systemproperty name="jetty.port" default="<b>8080</b>">
</systemproperty></set>
Меняем его на нужный, сохраняем файл и перезагружаем сервис: sudo /etc/init.d/scmserver restart
4. Добавьте SSL
Перейдем в директорию с конфигом: cd /***path_to_install_directory***/scm-server/conf/
Формируем сертификат на 1 год:
sudo keytool -genkey -alias scm -validity 365 -keyalg RSA -keystore keystore.jks
Редактируем конфиг:
sudo mcedit /***path_to_install_directory***/scm-server/conf/server-config.xml
Раскомментируем строки SSL-коннектора и укажем пароль (вместо *пароль*) для хранилища ключей, который мы ввели при его создании, порт, на котором он будет прослушивать SSL («Порт»), а также укажем местоположение хранилища ключей:
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<!--
Exclude SSLv3 to avoid POODLE vulnerability.
See https://groups.google.com/d/msg/scmmanager/sX_Ydy-wAPA/-Dvs5i7RHtQJ
-->
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="excludeProtocols">
<Array type="java.lang.String">
<Item>SSLv2Hello</Item>
<Item>SSLv3</Item>
</Array>
</Set>
</New>
</Arg>
<Set name="Port"><b>443</b></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="keystore"><SystemProperty name="basedir" default=".
" />/conf/keystore.jks</Set>
<Set name="password">***password***</Set>
<Set name="keyPassword"><b>***password***</Set>
<Set name="truststore"><SystemProperty name="basedir" default=".
" />/conf/keystore.jks</Set>
<Set name="trustPassword">***password***</Set>
</New>
</Arg>
</Call>
При необходимости смотрим отпечатки пальцев:
keytool -list -keystore keystore.jks
В процессе настройки SSL столкнулся с проблемой, что при прошивке через ssl сервер упорно жаловался на SSL и не хотел проталкивать.
Проблема оказалась в том, что в Python 2.7.9 и более поздних версиях запрет на самоподписанные сертификаты был включен по умолчанию.
Чтобы отключить эту опцию, отредактируйте файл: sudo mcedit /usr/lib/python2.7/ssl.py
Мы меняемся _create_default_https_context = create_default_context на _create_default_https_context = _create_unverified_context .
Перезагружаем сервис для применения изменений: sudo /etc/init.d/scmserver restart
На этом настройка через консоль завершена и дальнейшая настройка продолжится через веб-интерфейс.
5. Настройка SCM-Manager через веб-интерфейс
Зайти в веб-интерфейс локальный хост :8080. Удалить анонимный доступ и сменить пароль на встроенный администратора.В веб-интерфейсе зайдите в «Безопасность» — «Пользователи» -> удалить пользователя «аноним» -> сменить пароль пользователя «scmadmin».
Установка плагинов для авторизации через AD, отправки почты, отправки push-уведомлений.
В веб-интерфейсе заходим в «Конфиг» — «Плагины»: Для авторизации через AD установите: «scm-auth-ldap-plugin» Для отправки почты установите: «scm-mail-plugin» Для push-уведомлений установите: «scm-notify-plugin» Установка плагина для просмотра активности в репозиториях через веб-интерфейс: В веб-интерфейсе заходим в «Конфиг» — «Плагины».
Установите плагин: «scm-activity-plugin»
Чтобы завершить установку плагинов, перезапустите службу: sudo /etc/init.d/scmserver restart
Настройка плагина «LDAP Authentication».
В веб-интерфейсе перейдите в «Конфигурация» — «Основные» — раздел «Аутентификация LDAP».
Профиль: «Активный каталог» Базовый DN: дайте OU с пользователями для авторизации DN соединения: пользователь для авторизации SCM-Manager в AD Пароль подключения: (пароль пользователя для авторизации SCM-Manager в AD) URL-адрес хоста: IP и порт контроллера домена Включите группы объявлений Nester: нет Используйте StartTLS: нет (включить/отключить шифрование при подключении к AD) Давать возможность: да (включить/отключить плагин) После внесения настроек нажмите кнопку «Сохранить», чтобы сохранить их.
После внесения настроек вы можете протестировать настройки с помощью кнопки «Проверить соединение».
Теперь любой пользователь домена из указанного OU может войти в систему.
Но при этом по умолчанию у него нет прав нигде и он не сможет увидеть ни один репозиторий.
Администратору необходимо предоставить доступ пользователю, добавив его в список доступа репозитория или в группу, которой предоставлен доступ к необходимым репозиториям.
Настройка плагина для отправки почты: в веб-интерфейсе перейдите в «Конфигурация» — «Основные» — раздел «Настройка почты».
Установите следующие параметры: Хозяин: Адрес SMTP-сервера Порт: Порт SMTP-сервера Имя пользователя: логин для авторизации на SMTP сервере Пароль: пароль пользователя для авторизации на SMTP-сервере От: от кого придет письмо? Транспортная стратегия: SMTP_PLAIN (пароль в открытом виде) Префикс темы: (который будет вставлен в начале темы) Вы можете проверить сделанные настройки с помощью кнопки «Проверить конфигурацию».
Измените расположение репозиториев на сервере: в веб-интерфейсе перейдите в «Конфигурация» — «Типы репозиториев».
В разделах для SVN, Mercurial, Git пропишите свой путь в строках «Каталог репозитория».
Создание репозиториев: в веб-интерфейсе перейдите в «Основное» — «Репозитории», нажмите «Добавить».
В поле «Имя» укажите название репозитория, в поле «Тип» выберите тип репозитория.
Настройка push-уведомлений по электронной почте для репозиториев: в веб-интерфейсе зайдите в «Основное» - «Хранилища», выберите репозиторий, в котором хотите настроить push-уведомления по электронной почте, внизу появятся закладки, перейдите на вкладку «Уведомления» и заполните : Уведомить контактное лицо репозитория: нет Использовать автора как адрес отправителя :нет Электронная почта для каждого нажатия: нет Максимальное количество строк различия: 1000 (максимальное количество строк в письме, в котором будут показаны изменения, внесенные в файлы репозитория) Добавьте адрес электронной почты, на который будут приходить уведомления, нажав кнопку «Добавить».
Сохраните изменения, нажав кнопку «ОК».
На этом настройка конфигурации сервера по заданным условиям завершена и сервис готов к использованию.
SCM-Server позволяет импортировать репозитории с одним ограничением — он не может импортировать репозитории из мест, где требуется авторизация.
Теги: #настройка Linux #руководство #Debian #руководство #scm-manager
-
Курс По Google Newsroom! Революция Для Сми
19 Oct, 24 -
Jenkins Ci — То, Чего Мне Не Хватало
19 Oct, 24 -
E3 2007: Первые Отчеты
19 Oct, 24