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*апуск 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://your_server_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
gem install bundler
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
После установки настроек имеется возможность протестировать их. С помощью “Проверить установки отправкой сообщения администратору.” Вводим свой email и нажимаем “Test configuration”.
Если вы используете smtp сервер gmail, то у вас могу возникнуть ошибки при отправке тестового письма. Это связано с настройками безопасности Google и вашего аккаунта. Для того, чтобы разрешить отправку почты с вашего аккаунта вам необходимо перейти по ссылке https://accounts.google.com/b/0/DisplayUnlockCaptcha
Также имеется возможность указать Jenkins’у триггер для выполнения сборки. С помощью “Опрашивать SCM об изменениях” можно задать интервал проверки. Поставив значение “* * * * *” Jenkins будет опрашивать репозиторий каждую минуту на наличие изменений в ветке и при срабатывании запустит сборку. Более детально о настройке периодичности смотрите документацию по службе cron. Принцип его настройки идентичен.
P.S. Jenkins имеет огромное количество плагинов, которые обновляются достаточно часто. С их помощью вы можете расширять возможности вашего сервиса.
На этом пока все. В следующей статье мы научимся запускать Selenium Grid для запуска параллельных тестов на разных серверах со значительным ускорением их прохождения.
Статья написана совместно с командой Bug bang theory
Комментарии: