Transcript
Page 1: Непрерывная интеграция. Практическое применение

1

Непрерывная интеграция.Практическое применение

ДОКЛАДЧИК:

СМИРНОВ СЕРГЕЙ (НАЧ. СЕКТОРА, ОТДЕЛ 22)

[email protected]

СПб ГУП «СПб ИАЦ», 2013

Клуб разработчиковhttp://devclub.lan.iac.spb.ru

Page 2: Непрерывная интеграция. Практическое применение

2

ПЛАН

1. Введение в непрерывную интеграцию

2. Практическая задача

3. Инструменты

4. Решение

5. Резюме

Page 3: Непрерывная интеграция. Практическое применение

3

1. ВВЕДЕНИЕ В НЕПРЕРЫВНУЮ ИНТЕГРАЦИЮ

Page 4: Непрерывная интеграция. Практическое применение

4

НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ

Кого/чего с кем/чем?Компонентов разрабатываемого ПО между собой

Для чего?Для контроля за работоспособностью

Когда?При каждом изменении

При помощи чего?Системы контроля версийСценария построенияСервера непрерывной интеграции

Page 5: Непрерывная интеграция. Практическое применение

5

СХЕМА ИНТЕГРАЦИИ

Page 6: Непрерывная интеграция. Практическое применение

6

РАЗРАБОТЧИКИ

Локальная проверка изменений перед фиксацией

Частая фиксация изменений

Изменения мелкие и атомарные

Информативные сообщения к каждой фиксации изменений

Page 7: Непрерывная интеграция. Практическое применение

7

СИСТЕМА КОНТРОЛЯ ВЕРСИЙ

Хранение всех составляющих проекта:

исходные коды приложения и базы данных настройки среды разработки документация тестовые данные конфигурации различных сред развертывания библиотеки, компоненты, зависимости

Уведомление сервера CI о произведенных изменениях

Резервное копирование данных

Page 8: Непрерывная интеграция. Практическое применение

8

СЕРВЕР CI

Сборка после каждой фиксации изменений

Сборка по расписанию

Каждый тип сборки в виде отдельной задачи

Ведение журнала и истории запусков

Запуск сборки по нажатию одной кнопки

Уведомление разработчиков

Хранение артефактов сборки

Публикация отчетов

Page 9: Непрерывная интеграция. Практическое применение

9

СЦЕНАРИЙ ПОСТРОЕНИЯКлючевой элемент сборки

Не зависит от среды разработки (IDE)

Состоит из набора целей выполнения:

КомпиляцияИнтеграция БДЗапуск тестов (модульных, интеграционных и

т.д.)Запуска инспекций кодаЗапуск проверок следования соглашениямРазвертываниеПрочее

В качестве параметров получает файлы настроек

Page 10: Непрерывная интеграция. Практическое применение

10

МЕХАНИЗМ ОБРАТНОЙ СВЯЗИ

Уведомление о неудачных сборках

Главная задача – оповестить и заставить отреагировать

Оповещение виновника в неудаче

Оповещение по e-mail

SMS оповещение

Световая или звуковая сигнализация

Page 11: Непрерывная интеграция. Практическое применение

11

ПРЕИМУЩЕСТВА CI

Снижение рисков

Уменьшение ручных операций

Наличие развертываемого приложения в

любое время

Обеспечение лучшего контроля

Page 12: Непрерывная интеграция. Практическое применение

12

CI ИЗБАВЛЯЕТ ОТ:

Page 13: Непрерывная интеграция. Практическое применение

13

И ЕЩЕ ОТ:

Page 14: Непрерывная интеграция. Практическое применение

14

ЛИТЕРАТУРА

Page 15: Непрерывная интеграция. Практическое применение

15

2. ПОСТАНОВКА ЗАДАЧИ

Page 16: Непрерывная интеграция. Практическое применение

16

ДАНО

Java веб-приложение

Библиотека модульного тестирования – Junit

Среда разработки – NetBeans

Инструмент сборки – Ant

Сервер CI – Hudson

Сервер приложений – Glassfish 3.x

Система контроля версия – Subversion

Page 17: Непрерывная интеграция. Практическое применение

17

ТРЕБУЕТСЯ

Разработать сценарий построения для:

Сборки проекта Запуска модульных тестов Развертывания приложения на сервер

приложений Glassfish Настроить запуск построения проекта после

коммита

Page 18: Непрерывная интеграция. Практическое применение

18

3. ИНСТРУМЕНТЫ

Page 19: Непрерывная интеграция. Практическое применение

19

ANT Java утилита автоматизации сборки ПО

Процесс сборки описывается в XML-сценарии

Сценарий состоит из отдельных целей (Targets).

Цели содержат вызовы команд-заданий (Tasks).

Цели могут зависеть друг от друга 

Примеры целей: clean, compile, test, deploy

Примеры заданий: javac, move, copy, exec, zip

Возможность разработки собственных заданий

Наличие большого количества библиотек

Page 20: Непрерывная интеграция. Практическое применение

20

NETBEANS

Разработка приложения

Проект содержит базовый ant сценарий построения с точками расширения:

-pre-compile -post-compile -pre-test -post-test и т.д.

Запуск и отладка сценария построения

Page 21: Непрерывная интеграция. Практическое применение

21

HUDSON CI

Сервер непрерывной интеграции

Веб-интерфейс

Большое количество плагинов

Page 22: Непрерывная интеграция. Практическое применение

22

SUBVERSION Система контроля версий

Возможность запуска скриптов в ответ на события

Пример запуска построения после коммита

/var/svn_repo/name/hooks/post-commit#!/bin/shREPOS="$1"REV="$2"if svnlook changed --revision $REV $REPOS | egrep …then wget … http://url:8080/.../job/buildfi

Page 23: Непрерывная интеграция. Практическое применение

23

GLASSFISH Варианты развертывания приложения

Через веб admin console Автодеплой as-install/domains/domain-name/autodeploy Через утилиту asadmin

Варианты автоматического развертывания на удаленном сервере

Вызов локальной утилиты asadmin на машине построения (asadmin enable-secure-admin)

Загрузка war файла на удаленный сервер через scp и последующий запуск утилиты asadmin через sshexec на удаленном сервере

Page 24: Непрерывная интеграция. Практическое применение

24

3. РЕШЕНИЕ

Page 25: Непрерывная интеграция. Практическое применение

25

РЕШЕНИЕ

o Инструкции и исходные коды

o svn://devclub.lan.iac.spb.ru/materialso Hudson

o http://devclub.lan.iac.spb.ru:8088/hudsono Презентация и видео

o http://devclub.lan.iac.spb.ru/web/devclub/archive

Page 26: Непрерывная интеграция. Практическое применение

26

4. РЕЗЮМЕ

Page 27: Непрерывная интеграция. Практическое применение

27

СПАСИБО ЗА ВНИМАНИЕ!


Recommended