Добрый день, хаброчитатели.
Снова хочу поделиться с вами небольшими практическими наработками.
Совсем недавно в рамках одного проекта мне была поставлена задача подготовить для команды тестеров стандартное окружение для сборки и тестирования приложения (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
Теперь нужно реализовать работу 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.
Функционал приятно порадовал. Приложение умеет работать с SVN и GIT.
Меню простое и понятное.
Создаём пользователя с правами «READ» для использования его в задачах Jenkins.
Создаём репозиторий.
Даём доступ пользователю в репозиторий.
Смотрим какой url у нашего репозитория и пробуем сделать checkout.
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» -> «Конфигурирование системы»
На этом конфигурирование завершено. Окружение готово к работе.
Автор: camec