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