4. НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ
Кого/чего с кем/чем?
Компонентов разрабатываемого ПО между собой
Для чего?
Для контроля за работоспособностью
Когда?
При каждом изменении
При помощи чего?
Системы контроля версий
Сценария построения
Сервера непрерывной интеграции
4
6. РАЗРАБОТЧИКИ
Локальная проверка изменений перед фиксацией
Частая фиксация изменений
Изменения мелкие и атомарные
Информативные сообщения к каждой фиксации
изменений
6
7. СИСТЕМА КОНТРОЛЯ
ВЕРСИЙ
Хранение всех составляющих проекта:
исходные коды приложения и базы данных
настройки среды разработки
документация
тестовые данные
конфигурации различных сред развертывания
библиотеки, компоненты, зависимости
Уведомление сервера CI о произведенных
изменениях
Резервное копирование данных
7
8. СЕРВЕР CI
Сборка после каждой фиксации изменений
Сборка по расписанию
Каждый тип сборки в виде отдельной задачи
Ведение журнала и истории запусков
Запуск сборки по нажатию одной кнопки
Уведомление разработчиков
Хранение артефактов сборки
Публикация отчетов
8
9. СЦЕНАРИЙ ПОСТРОЕНИЯ
Ключевой элемент сборки
Не зависит от среды разработки (IDE)
Состоит из набора целей выполнения:
Компиляция
Интеграция БД
Запуск тестов (модульных, интеграционных и
т.д.)
Запуска инспекций кода
Запуск проверок следования соглашениям
Развертывание
Прочее
В качестве параметров получает файлы настроек
9
10. МЕХАНИЗМ
ОБРАТНОЙ СВЯЗИ
Уведомление о неудачных сборках
Главная задача – оповестить и заставить
отреагировать
Оповещение виновника в неудаче
Оповещение по e-mail
SMS оповещение
Световая или звуковая сигнализация
10
11. ПРЕИМУЩЕСТВА CI
Снижение рисков
Уменьшение ручных операций
Наличие развертываемого приложения в
любое время
Обеспечение лучшего контроля
11
16. ДАНО
Java веб-приложение
Библиотека модульного тестирования – Junit
Среда разработки – NetBeans
Инструмент сборки – Ant
Сервер CI – Hudson
Сервер приложений – Glassfish 3.x
Система контроля версия – Subversion
16
17. ТРЕБУЕТСЯ
Разработать сценарий построения для:
Сборки проекта
Запуска модульных тестов
Развертывания приложения на сервер
приложений Glassfish
Настроить запуск построения проекта после
коммита
17
19. ANT
Java утилита автоматизации сборки ПО
Процесс сборки описывается в XML-сценарии
Сценарий состоит из отдельных целей (Targets).
Цели содержат вызовы команд-заданий (Tasks).
Цели могут зависеть друг от друга
Примеры целей: clean, compile, test, deploy
Примеры заданий: javac, move, copy, exec, zip
Возможность разработки собственных заданий
Наличие большого количества библиотек
19
20. NETBEANS
Разработка приложения
Проект содержит базовый ant сценарий
построения с точками расширения:
-pre-compile
-post-compile
-pre-test
-post-test
и т.д.
Запуск и отладка сценария построения
20
21. HUDSON CI
Сервер непрерывной интеграции
Веб-интерфейс
Большое количество плагинов
21
22. SUBVERSION
Система контроля версий
Возможность запуска скриптов в ответ на события
Пример запуска построения после коммита
/var/svn_repo/name/hooks/post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
if svnlook changed --revision $REV $REPOS | egrep …
then
wget … http://url:8080/.../job/build
fi
22
23. GLASSFISH
Варианты развертывания приложения
Через веб admin console
Автодеплой as-install/domains/domain-name/autodeploy
Через утилиту asadmin
Варианты автоматического развертывания на
удаленном сервере
Вызов локальной утилиты asadmin на машине
построения (asadmin enable-secure-admin)
Загрузка war файла на удаленный сервер через scp и
последующий запуск утилиты asadmin через sshexec
на удаленном сервере
23
25. РЕШЕНИЕ
o Инструкции и исходные коды
o svn://devclub.lan.iac.spb.ru/materials
o Hudson
o http://devclub.lan.iac.spb.ru:8088/hudson
o Презентация и видео
o http://devclub.lan.iac.spb.ru/web/devclub/archive
25