1/15/2015

Jenkins, как инструмент для запуска тестов



Настало время нам познакомится с Jenkins’ом. Использовать его будем в качестве автоматического прогона тестов на удаленном сервере. Так как надоело использовать свою рабочую машину и ждать, когда же они наконец-то пройдут… Или упадут.


У нас есть:
  • проект Ruby on Rails
  • MySQL Database in project
  • тесты Cucumber with Capybara
  • Ubuntu сервер


Для начала ставим на сервер Java7, Tomcat7, Jenkins - инструмент непрерывной интеграции. Также необходимо установить MySQL server,  Firefox, Chrome, Xvfb. Xvfb - virtual frame buffer for X, он необходим для запуска GUI приложений на виртуальных иксах.


Приступим:


sudo apt-get install mysql-server firefox xvfb tomcat7 git curl gawk g++ make libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev postfix


sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer


pushd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb
sudo apt-get install -f
popd


В файле /etc/default/tomcat7 исправляем опцию JAVA_HOME:


JAVA_HOME=/usr/lib/jvm/java-7-oracle


Не забудьте исправить запуск Tomcat7, если вы используете дроплеты DigitalOcean.


Для установки Jenkins необходимо скачать его, переименовать как ROOT.war и положить в каталог /var/lib/tomcat7/webapps.


Каталог /var/lib/tomcat7/webapps/ROOT необходимо удалить.


Для работы Jenkins необходимо создать несколько каталогов:


mkdir -p /usr/share/tomcat7/.rvm
mkdir -p /usr/share/tomcat7/.jenkins
chown -R tomcat7:tomcat7 /usr/share/tomcat7
sudo service tomcat7 restart


Доступ к Jenkins можно получить по адресу http://IP_вашего_сервера:8080.


Чтобы настроить Jenkins на прохождение кукумберовских тестов необходимо установить некоторые плагины для Jenkins с панели Управления плагинами. А именно: Git Plugin, Rvm, Xvfb plugin.


Затем идем в Настройки Jenkins в Конфигурирование системы раздел Xvfb installation
Добавляем Xvfb installation
Name: default
Directory in which to find Xvfb executable: /usr/bin

Далее создаем новый Item для Jenkins’a - задачу со свободной конфигурацией.


Управление исходным кодом: выбираем Git, устанавливаем Repository URL, Credentials.
Branches to build: указываем ветку, с которой будет происходить сборка.
Среда сборки:
  • Start Xvfb before the build, and shut it down after:
Xvfb installation - default
Timeout in seconds - 0
Xvfb screen - 1440x900x24
Xvfb display name offset - 1


  • Run the build in a RVM-managed environment
<Ruby version>@project_name


Далее указываем команду shell:


export RAILS_ENV=test
export TEST_ENV_NUMBER=_cucumber_dev_${BUILD_NUMBER}
echo "
test:
 adapter: mysql2
 encoding: utf8
 pool: 10


 database: project_name_test<%= ENV['TEST_ENV_NUMBER'] %>
 host: localhost
 username: root
 password: *******
" > config/database.yml


bundle install


bundle exec rake db:create
bundle exec rake db:migrate
bundle exec cucumber
bundle exec rake db:drop


После сохранения изменений можно запускать первую сборку. Введенных выше настроек вполне достаточно для минимальных требований.
Но мы на этом не останавливаемся и идем дальше.


Для получения результатов о выполнении сборки можно настроить уведомления по электронной почте. Для этого необходимо добавить новый шаг после сборки “Уведомления по почте”.


Также необходимо зайти в глобальные настройки Jenkins’a. В разделе “Уведомление почтой” настроить сервер SMTP.
Для использования сервера gmail настройки будут следующие:
Сервер SMTP - smtp.gmail.com
Использовать аутентификацию для SMTP
Имя пользователя - xxx@gmail.com
Пароль - *****
Использовать SSL
Порт SMTP - 465
Reply-To Address - noreply@something.com
2.png


После установки настроек имеется возможность протестировать их.
С помощью “Проверить установки отправкой сообщения администратору.”
Вводим свой email и нажимаем “Test configuration”.


Если вы используете smtp сервер gmail, то у вас могу возникнуть ошибки при отправке тестового письма. Это связано с настройками безопасности Google и вашего аккаунта. Для того, чтобы разрешить отправку почты с вашего аккаунта вам необходимо перейти по ссылке https://accounts.google.com/b/0/DisplayUnlockCaptcha


Также имеется возможность указать Jenkins’у триггер для выполнения сборки.
С помощью “Опрашивать SCM об изменениях” можно задать интервал проверки. Поставив значение “* * * * *” Jenkins будет опрашивать репозиторий каждую минуту на наличие изменений в ветке и при срабатывании запустит сборку. Более детально о настройке периодичности смотрите документацию по службе cron. Принцип его настройки идентичен.


P.S. Jenkins имеет огромное количество плагинов, которые обновляются достаточно часто. С их помощью вы можете расширять возможности вашего сервиса.


На этом пока все. В следующей статье мы научимся запускать Selenium Grid для запуска параллельных тестов на разных серверах со значительным ускорением их прохождения.

Огромная благодарность Дмитрию Лялюеву за соавторство.

Комментариев нет:

Отправить комментарий