Nerrvana в работе – сборка приложения и Jenkins (часть 2)

Using Nerrvana - deployment & Jenkins (part 2)

Создание Jenkins job – подробностисборки приложения у нас – установкаприложения для тестирования

Part 1 – Nerrvana в работе – как это делается у нас
Part 2 – Nerrvana в работе – SVN втыкается в Jenkins
Part 3 – Nerrvana в работе – сборка приложения и Jenkins (часть 1)
Part 4 – Nerrvana в работе – сборка приложения и Jenkins (часть 2) – этот пост

В предыдущем посте мы закончили конфигурирование Jenkins и теперь можем создать задачу по тестированию нашего приложения.

Открываем страницу http://your_jenkins_host/view/All/newJob и вводим название job. Поскольку наше приложение называется Answers, то мы используем его.

На практике удобно добавить информацию о версии. Например, job ‘Answers TRUNK’ тестирует TRUNK, job ‘Answers Release 1.4′ тестирует Release 1.4.

New Jenkins job

Далее в секции ‘Advanced Project Options’ нажимаем кнопку ‘Advanced …’ и выставляем ‘Quiet period’ в 0 секунд. Мы знаем, что многие делают build несколько раз в день. В этом случае параметры запуска Jenkins job будут иными. Мы же делаем build под каждый коммит и потому нам нет смысла ждать 5 секунд. Помощь в Jenkins к этому пункту очень хорошо описывает практические случаи, когда эта опция нужна.
Read the rest of this entry »

В копилку виртуализатору – установка Win 7 под Xen

Virtualizer toolbox - install Win 7 on Xen

Этот пост является продолжением двух предыдущих постов. Первый рассказывает об установке Xen и второй – о минимизации Windows 7 для работы с Selenium. По сути нами вырезано максимум компонентов, так как нам нужны только браузеры.

Сейчас мы покажем, как установить созданный нами мини-Windows 7, как виртуальную машину Xen (процесс установки со стандартного образа Windows 7 будет таким же, за исключением того, что вам, возможно, понадобится создать logical volume чуть большего размера).

В посте об установке Xen мы за уже создали логический том командой …

#lvcreate –size 7G –name win7 vg0

… запустили VNC сервер, подсоединились к хосту с помощью VNC Viewer, запустили Virtual Machine Manager и, наконец, нажали кнопочку ‘New’.

Далее всё очень просто.
Read the rest of this entry »

В копилку виртуализатору – лилипутинизация Windows 7

Virtualizer toolbox - Honey, I Shrunk Windows 7

Если вы используете Selenium, то вам наверняка понадобятся минимизированные версии операционных систем, которые заточены под ключевую задачу – работу с браузерами. Сегодня мы расскажем о том, как создавался образ Windows 7 для Nerrvana, который в результате устанавливается на 7GB и работает в 512MB RAM.

Все перипетии и мытарства процесса намерено опущены. Только их описанию можно было бы посвятить целый пост, но кому они интересны кроме автора?

Для кастомизации Windows 7 я использовал R7 Lite. Спасибо знатокам за подсказку, так как попытки использовать vLite (для Windows XP мы использовали xLite) не привели ни к чему хорошему.

Для работы мне понадобился оригинальный образ Windows 7 Home Premium. Так что все инструкции ниже приведены для минимизации именно этой версии.

Почему именно Premium? Если вы используете для виртуализации VMWare или KVM возможно и Windows Home Basic будет работать для вас. Мы же используем Xen на 64 битном CentOS и путем долгих экспериментов я выяснил один необъяснимый феномен – даже на оригинальном Home Basic, а он существует только в 32 битной версии, я не смог установить Adobe Flash на IE. Он просто загадочно не устанавливается. Тогда я взял менее приемлемый, поскольку в нём больше функций, которые нам как раз и не нужны, Home Premum 64 бит, поставил его ‘как есть’ на Xen и Flash установился без проблем. При этом Flash ставился без проблем на тот же Home Basic, установленный на VMWare, работающий на 64 битном компе. Поди знай!
Read the rest of this entry »

В копилку виртуализатору – установка Unix-ов рядком

Virtualizer toolbox - install Unix distros side by side

Эни, бени, CentOS, дважды,
Турба, урба, Ubuntu,
Эус, Windows, краснобэус,
Бац!

Детская считалка

Сегодня мы публикуем простую инструкцию по установке нескольких дистрибутивов Unix на ваш Windows-компьютер. Зачем? – можете спросить вы, когда так много возможностей поставить виртуальные машины. Вот как раз в том случае, когда вам по какой-то причине нужно установиться на “голое” железо, такой способ установки и пригодится. Мне, например, понадобилась такая установка для работы с Xen на CentOS 5.8 для создания образа виртуальной машины Windows 7 (тема нашего следующего поста) для Nerrvana. Как вы знаете, Xen не поддерживается RedHat начиная с версии 6 и, поскольку мы стараемся работать на стабильном окружении, мы выбрали Xen в 2008, а сейчас посматриваем на KVM. Вот для работы с KVM я установил CentOS 6.2 и Ubuntu 12.04.1. Поскольку сам процесс понимания установки нескольких операционных систем занял некоторое время, то мы, опять же по традиции, делимся накопленным опытом с вами. Понимание в данном случае масштабируемо, и вы сможете установить их хоть сто таким способом – было бы время, желание и свободное место на диске.

Итак. Мы имеем Dell ноутбук, на котором установлена Windows 7. Я не буду останавливаться на том, как подвинуть Windows. Есть масса утилит, которые способны вам в этом помочь, включая стандартные.
В моём случае я освободил 270GB на 500GB диске, чтобы поставить три операционные системы. Для этого мне понадобились следующие файлы, которые я записал на CD-юки.

- CentOS-5.8-x86_64-netinstall.iso – 14Мб
- CentOS-6.2-x86_64-netinstall.iso – 243 Мб (в момент написания поста уже доступен 6.3)
- ubuntu-12.04.1-server-i386.iso – 660Мб

Заранее прошу прощения за качество фотографий. Их сегодня будет очень много.
Read the rest of this entry »

В копилку виртуализатору – установка Xen

Virtualizer toolbox - Xen installation


Простая инструкция как установить Xen на CentOS 5.8 на девелоперскую машину для экспериментов.

Для начала рекомендуется проверить поддерживается ли вашим процессором виртуализация. В этой статье вы найдёте комманды для проверки.

Предполагается, что на установленной системе у вас есть место для инсталляционного диска и для создаваемого образа виртуальной машины. Образ может находится на разделе диска, в файле или логическом разделе (logical volume).
Read the rest of this entry »

Nerrvana в работе – сборка приложения и Jenkins (часть 1)

Using Nerrvana - deployment & Jenkins (part 1)

Схема развёртывания приложения – установка и настройка Jenkins -
подготовка к установке приложения для тестирования

Part 1 – Nerrvana в работе – как это делается у нас
Part 2 – Nerrvana в работе – SVN втыкается в Jenkins
Part 3 – Nerrvana в работе – сборка приложения и Jenkins (часть 1) – этот пост
Part 4 – Nerrvana в работе – сборка приложения и Jenkins (часть 2)

Для начала несколько слов о развёртывании приложения (application deployment). В самом общем случае развёртывание заключается в превращении кода, полученного из системы контроля версий, в работающее приложение. Мы пока не используем Jenkins для обновления наших сайтов и сервисов, но предполагаем, что развёртывание для тестирования будет не очень отличаться от развёртывания для обновления или установки. В последнем случае нужно позаботиться о пользователях, сообщив им заранее о перерыве в работе сервиса и уделить большее внимание безопасности: правам доступа к файлам, возможности отката назад автоматически в случае неудачи. Так или иначе, сейчас эти проблемы нас не интересуют. Нам нужно получить работающее приложение на внутреннем сервере, с которым могут работать Selenium-тесты. Для различных приложений процедуры развёртывания будут разными. Мы расскажем о своей – в немного упрощённом варианте. В последнем посте цикла мы обязательно покажем свою конфигурацию, но сейчас эта информация будет попросту мешать.
Read the rest of this entry »

Nerrvana в работе – SVN втыкается в Jenkins

Using Nerrvana - SVN hooks to Jenkins

Part 1 – Nerrvana в работе – как это делается у нас
Part 2 – Nerrvana в работе – SVN втыкается в Jenkins – этот пост
Part 3 – Nerrvana в работе – сборка приложения и Jenkins (часть 1)
Part 4 – Nerrvana в работе – сборка приложения и Jenkins (часть 2)

Первым делом я установил SVN-сервер. Дёргать Вадима я не стал. Нашёл хорошую инструкцию (если ссылка перестанет работать, вот скриншот этой страницы) и действовал по ней. Затем взял нужный мне код проекта и импортировал его в установленный SVN-сервер.

Следуя инструкции выше, добавляем SVN пользователя ‘jenkins’ и запоминаем его пароль.

Далее создаём файл post-commit-hook-for-jenkins в /var/www/svn/answers/hooks/ (‘answers’ – название репозитория).
Read the rest of this entry »

Nerrvana в работе – как это делается у нас

Three whales - version control, continuous integration, Selenium

Part 1 – Nerrvana в работе – как это делается у нас – этот пост
Part 2 – Nerrvana в работе – SVN втыкается в Jenkins
Part 3 – Nerrvana в работе – сборка приложения и Jenkins (часть 1)
Part 4 – Nerrvana в работе – сборка приложения и Jenkins (часть 2)

Виктор закончил работу над первой публичной версией Jenkins плагина для облака Selenium тестирования Nerrvana, настроил Jenkins, и теперь тесты наших Answers запускаются автоматически. Пока Виктор занимается дооформлением плагина и выкладыванием его на GitHub, чтобы он стал доступен и на странице плагинов Jenkins-a, я занялся созданием новых страниц документации, связанных с плагином. Я мог бы, конечно, просто описать, как установить плагин, но мне показалось, что есть возможность сделать это лучше. И поэтому я решил написать не только о том, как установить плагин, но и о том, как процесс тестирования организован у нас и даже о том, как и почему мы организовали этот процесс и что обсуждали по ходу дела. Конечно, это будет один из возможных путей, но он позволит полнее представить, как можно организовать Selenium тестирование у себя и, надеюсь, будет полезен даже в том случае, если вы будете использовать не Nerrvana, а свою Selenium среду или решения, предлагаемые другими компаниями.

После достаточно долгих обсуждений мы остановились на следующем подходе:

1. После коммита в SVN-репозиторий срабатывает post-commit hook

2. SVN-хук сообщает Jenkins об этом событии.

3. Jenkins разворачивает (deploys) приложение, или, попросту говоря, берёт закоммиченную вами версию и устанавливает её на одном из выделенных для этой цели серверов в нашем оффисе.

4. Jenkins, используя Nerrvana плагин, синхронизирует код тестов, которые уже были извлечены из SVN-репозитория на шаге 3, с тестами, которые уже лежат на Nerrvana, и запускает тесты.

5. По окончании тестирования неплохо было бы отправить коммитеру письмо со статусом выполнения (выполнились ли тесты или завершились фатально), и сколько ошибок (кратенько) они накопали. Пока* будет достаточно просто письма со ссылками на отчёты с каждой платформы.

* – в будущем мы планируем загружать результаты тестирования с разных платформ обратно в Jenkins и собирать один агрегированный кросс-платформенный отчёт. Конечно, в этом случае будет логично отсылать почтовые уведомления уже из этой aggregate_notify Jenkins задачи. Без такого подхода придётся просматривать 5-6 отчётов с каждой платформы, на которой тестировали.

Теперь несколько слов о том, что же мы обсуждали и почему реализовали именно такую схему.
Read the rest of this entry »

Логирование Selenium Grid2 в базу данных

Selenium logs

Некоторое время назад мы перевели Nerrvana на использование Selenium Grid2. Это позволило запускать ваши тесты как для Selenium1, так и для WebDriver. Кроме того, последние версии Selenium всё лучше и лучше работают с браузерами.

С самого начала мы решили делиться проблемами и находками, которые возникали при создании Nerrvana, чтобы вы при желании смогли построить собственное облако для Selenium – или чтобы просто помочь вам решить одну из проблем..

Сегодня мы расскажем об одной из проблем, которая возникла во время перехода на Selenium Grid2 – проблеме с записью логов Selenium node в базу данных.

Для чего нам это нужно?

Во-первых, слежение за логом Selenium позволяет опеределить, что сам Selenium node/RC хорошо себя чувствует.
Во-вторых, из лога можно узнать, работают ли ещё тесты с браузером. Если тесты запущены, но давно не обращались к браузеру – это верный признак того, что что-то не в порядке: тесты подвисли, неправильно сконфигурированы и так далее.
В-третьих, это нужно для моментального отображения user messages в интерфейсе Nerrvana.
Read the rest of this entry »

Как на САМОМ деле отключить автообновление Chrome

Chrome on a leash

Nerrvana предоставляет набор браузеров разных версий на разных ОС. Мы используем несколько Xen образов Windows с разными наборами браузеров, и запускаем копии нужных образов.
Естественно, автообновление браузеров должно быть отключено. Если браузеры начнут обновляться самостоятельно, то:

1) мы не сможем гарантировать пользователям, что их тесты были выполнены на правильной версии браузера
2) запуск тестов может задержаться из-за обновления браузера
3) обновление браузера использует ресурсы (трафик и процессор), что тоже может повлиять на скорость выполнения тестов

Конечно, в наборе браузеров имеется и Google Chrome. И с отключением его автообновления может случиться заминка, даже если следовать официальной инструкции. В этом коротком посте я расскажу о том, как действительно запретить обновление Хрома.  Read the rest of this entry »

Заблудились? Зайдите в архив.