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

в 12:58, , рубрики: Jenkins, linux, SCM Manager, системное администрирование, метки: , ,

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

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

Все тесты должны проводиться в частной виртуальной сети, доступ в которую организован через впн-соединение.
Сервер, на котором производится установка выхода в интернет не имеет.
Прав на установку чего-либо заказчик решил не выдавать в целях безопасности. И по той же причине из доступных портов были только 22 и 8080.
Не густо, но, как выяснилось, вполне достаточно.
Первым делом выкачиваем себе локально последнюю версию Apache-Tomcat и Jenkins.
Потом по 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:8080/jenkins
image

Теперь нужно реализовать работу svn ( в моей случае это Subversion, который идёт в поставке с redhat) через Tomcat.
После некоторого поиска готовых решений нашёл SCM Manager.
Выкачиваем последнюю версию SCM WebApp и заливаем её по scp на сервер в папку /path/to/my/home/apache-tomcat/webapps.
Делаем рестарт Tomcat.
Идём знакомиться с SCM Manager по ссылке your_server_ip: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, отправляем его по 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

Источник


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


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