- PVSM.RU - https://www.pvsm.ru -

Настройка окружения для сборки и тестирования приложения в закрытом периметре

Добрый день, хаброчитатели.

Снова хочу поделиться с вами небольшими практическими наработками.
Совсем недавно в рамках одного проекта мне была поставлена задача подготовить для команды тестеров стандартное окружение для сборки и тестирования приложения (Jenkins + SVN + Maven).

Все тесты должны проводиться в частной виртуальной сети, доступ в которую организован через впн-соединение.
Сервер, на котором производится установка выхода в интернет не имеет.
Прав на установку чего-либо заказчик решил не выдавать в целях безопасности. И по той же причине из доступных портов были только 22 и 8080.
Не густо, но, как выяснилось, вполне достаточно.
Первым делом выкачиваем себе локально последнюю версию Apache-Tomcat [1] и Jenkins [2].
Потом по scp заливаем архив и jenkins.war на наш сервер.
Распаковываем архив и помещаем jenkins.war в папку /path/to/my/home/apache-tomcat/webapps.
Пробуем запускать:

/path/to/my/home/apache-tomcat/bin/startup.sh
Using CATALINA_BASE:   /path/to/my/home/apache-tomcat
Using CATALINA_HOME:  /path/to/my/home/apache-tomcat
Using CATALINA_TMPDIR: /path/to/my/home/apache-tomcat/temp
Using JRE_HOME:        /usr/java/latest
Using CLASSPATH:       /path/to/my/home/apache-tomcat/bin/bootstrap.jar:/path/to/my/home/apache-tomcat/bin/tomcat-juli.jar

Проверяем, что Jenkins стартовал корректно по ссылке your_server_ip [3]:8080/jenkins
image

Теперь нужно реализовать работу svn ( в моей случае это Subversion, который идёт в поставке с redhat) через Tomcat.
После некоторого поиска готовых решений нашёл SCM Manager [4].
Выкачиваем последнюю версию SCM WebApp [5] и заливаем её по scp на сервер в папку /path/to/my/home/apache-tomcat/webapps.
Делаем рестарт Tomcat.
Идём знакомиться с SCM Manager по ссылке your_server_ip [3]:8080/scm-webapp-1.30.
Стандартные логин/пароль — scmadmin/scmadmin.
image

Функционал приятно порадовал. Приложение умеет работать с SVN и GIT.
Меню простое и понятное.
Создаём пользователя с правами «READ» для использования его в задачах Jenkins.
image

Создаём репозиторий.
image

Даём доступ пользователю в репозиторий.
image

Смотрим какой url у нашего репозитория и пробуем сделать checkout.
image

sandro@sandro-VirtualBox:~/myrepo$ svn checkout http://jenkins@your_server_ip:8080/scm-webapp-1.30/svn/myrepo
Authentication realm: <http://your_server_ip:8080> SONIA :: SCM Manager
Пользователь: jenkins
Пароль для 'jenkins': 
Получена редакция 0.

Maven устанавливаем по той же схеме.
Выкачиваем локально пакет Apache-Maven [6], отправляем его по scp на сервер и там распаковываем.
Так как у сервера выхода в интернет нет, то нужно сразу позаботиться о наличии всех зависимостей сборки локально на сервере.
Для этого я просто попросил одного из тестеров приложения дать мне архив его локального репозитория (для тех, кто не знаком с maven, это папка .m2).
Этот архив я также отправил по scp на сервер и там распаковал.
Настраиваем maven на использование локального репозитория:
Открываем maven/conf/settings.xml, находим и приводим к следующему виду строки:

<localRepository>/path/to/my/home/.m2/repository</localRepository>
<offline>true</offline>

Настраиваем Jenkins на использование нашего Maven.
Для этого открываем вкладку «Настроить Jenkins» -> «Конфигурирование системы»
image

На этом конфигурирование завершено. Окружение готово к работе.

Автор: camec

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/32153

Ссылки в тексте:

[1] Apache-Tomcat: http://apache-mirror.telesys.org.ua/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz

[2] Jenkins: http://mirrors.jenkins-ci.org/war/latest/jenkins.war

[3] your_server_ip: http://your_server_ip

[4] SCM Manager: http://www.scm-manager.org/

[5] SCM WebApp: http://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm/scm-webapp/1.30/scm-webapp-1.30.war

[6] Apache-Maven: http://apache-mirror.telesys.org.ua/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz

[7] Источник: http://habrahabr.ru/post/176719/