воскресенье, 5 октября 2014 г.

Автосборка стендов CBS3plus

Перейти к концу метаданных
Переход к началу метаданных

Аннотация

Эта статья описывает инструменты и настройки для автосборок стендов через Hudson.

Настройка виртуалки

  1. Расшарить диск C: с именем disc_c для пользователя build
  2. Добавить пользователя build в администраторы
  3. Клонировать нужные хранилища. hg clone [источник] [путь]
    Во вложении есть батник, который выполняет эти действия, запускается из любого места на диске. В зависимости от локализации может не выполниться 2ой шаг, поэтому надо проверить добавился ли пользователь build в администраторы и, если не добавился, сделать это вручную.

Описание файлов для тестирования в хранилище draft

  • build.xml
    В нем хранятся цели(target) для запуска ant'ом.
    Для запуска тестов используется тег <runTest>.
    Для обычных сборок вызывается AssertAfterBuild, в ней находится список адресов для рассылки, а сама цель вызывается с параметрами: ant -d AssertAfterBuild -Dhost=[ip_адрес_виртуалки] -Dcount=[количество_war_файлов_в_папке_deploy]. Пример: ant -d AssertAfterBuild -Dhost=1.1.0.98 -Dcount=12
    В целях с именем ip адресом виртуалки (например: <target name="1.1.0.212">) хранятся xpath пути имен модулей, которые должны задеплоиться на данной виртуалке (файл config.xml).
    Цель Login вызывает SoapUI тест, который выполняет логин на указанную виртуалку. ant Login -Dhost=[ip_адрес_виртуалки] -DappPort=[порт] -Dlogin=[имя] -Dpassword=[пароль]. Пример: ant Login -Dhost=1.1.0.98 -DappPort=8080 -Dlogin=COLVIR -Dpassword=colvir
    Для отсылки распарсенного лога используется цель SendParsedLog. Работает только на OSGI сборках, выделяет строки начинающиеся с BuildInfo и вызывается в Post build task. Вызов: ant -d SendParsedLog -Dhost=[ip_адрес_виртуалки]. Пример: ant -d SendParsedLog -Dhost=1.1.4.101
    Цели с именами заканчивающимися на цифры (CoreModules98) изменяют пулы на виртуалках.
    Для запуска ant из Hudson'a нужно выполнить команду set path=C:\ant\1.9.3\bin\;%path%
  • clear_ws.bat (не используется в сборках OSGI)
    Удаляет из \IBM\WebSphere\AppServerCommunityEdition\repository\colvir\ все папки кроме oracle.
  • deploy_wars.bat (не используется в сборках OSGI)
    Вручную деплоит все war файлы.

Описание команд в maven

  • Сборка OSGI - mvn clean install -Pdeploy-to-osgi [список модулей, если собирается ядро]
  • Обычная сборка - mvn clean install -Pdeploy-to-dir [список модулей, если собирается ядро]
    Место для деплоя прописано в C:\maven\conf\settings.xml в профилях с названиями deploy-to-osgi и deploy-to-dir.

Порядок сборки


  • OSGI
  1. Удаляем старые бандлы.
  2. Убиваем процесс cmd.exe и conhost.exe пользователя build.
  3. Обновление хранилища.
  4. Останавливаем сервер, если он запущен.
  5. Убиваем java, если процесс остался после предыдущего шага и запуск если он остановлен.
  6. Сборка пулов.
  7. Сборка ядерных модулей. 
  8. Обновление хранилища дополнительных модулей. 
  9. Сборка дополнительных модулей.
  10. Ассерт на количество jar файлов в папке hotbundles
  11. SoapUI тест на логин.
  12. Post build task: отправляем лог на почту.

  • Обычная
  1. Обновление хранилища
  2. Сборка ядерных модулей.
  3. Обновление хранилища дополнительных модулей. 
  4. Сборка дополнительных модулей.
  5. Остановка сервера.
  6. Удаляем из \IBM\WebSphere\AppServerCommunityEdition\repository\colvir\ все папки кроме oracle.
  7. Изменение пулов в файле /IBM/WebSphere/AppServerCommunityEdition/var/config/config.xml.
  8. Запускаем сервер.
  9. Деплоим war файлы.
  10. Перезапускаем сервер.
  11. Ассерт на модули записанные в config.xml и на количество модулей в папке deploy.
  12. SoapUI тест на логин.

Ассерты

  • На количество файлов
    Для OSGI:
    Запускается в Hudson командой: psexec -i \\[ip_адрес_виртуалки] -u colvir\build -p buildbuild cmd /c "dir c:\IBM\geronimo\hotbundles\*.jar /b | find /v /c "::" | find "[количество_jar_файлов_в_папке_hotbundles]""
    Для обычных сборок:
    Запускается в Hudson командой: ant -d AssertAfterBuild -Dhost=[ip_адрес_виртуалки] -Dcount=[количество_war_файлов_в_папке_deploy]
  • На записи в config.xml
    Модули прописаны в build.xml. Для каждой виртуалки есть цель с именем таким же как её ip адрес.
  • Логин
    Запускается в Hudson командой: ant Login -Dhost=[ip_адрес_виртуалки] -DappPort=[порт] -Dlogin=[имя] -Dpassword=[пароль]
  • На запущенный процесс java.exe
    Прописан в build.xml в цели AssertAfterBuild.

Расписание сборок

Расписание сборок находится в Hudson в настройках задачи. Настроить Проект -> Триггеры сборки -> Собирать периодически. В расписании используется cron syntax.
Схема:
* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)
Пример:
0 8 * * *
Сборка будет выполняться каждый день в 8 утра.

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

  1. Из пожеланий на будущее:
    1) Отправлять один отчет на все автосборки с состояниями сборки(удача\неудача) и одним письмом
    2) Параметризовать задачи сборки
    3) Перенести SoapUI со 187й виртуалки на 72ю
    4) Придумать как срубать и перезапускать автосборку, в случае ее зависания, автоматически (такое бывает)

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

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