4. 30.01.15 4
Системы непрерывной
интеграции
Мы используем TeamCity (JetBrains):
Поддержка большого количества VCS
Полная версия бесплатная для малых групп
Способы запуска:
Command Line, Ant, Nant,Visual Studio,
Maven2, пр.
Другие системы:
Apache Continuum, Team Foundation Servers, Tinderbox,
BuildBox
5. 30.01.15 5
Основные принципы работы
TeamCity Server
Мониторинг за состоянием репозитория
Запуск сборочного агента
Сборка проекта на стороне сборочного агента
Копирование артефактов на сервер
Предоставление доступа к артефактам сборки
8. 30.01.15 8
Юнит-тесты
Рабочий фрейворк — Google Toolbox for Mac
Альтернативы:
SenTestingKit framework (Xcode)
GHUnit
Принцип работы большинства — создание Target в Xcode.
Запуск юнит-тестов — сборка этой Target.
STAssertTrue(gTestMultiDelegateVar == 2 + 2 * 1,
@"Adding twice '1'... Should be == 6 but now it's
%d", gTestMultiDelegateVar)
11. 30.01.15 11
Пример юнит-теста. Запуск
Build results:
Test Case '-[LogicTests testConfig]' started.
Test Case '-[LogicTests testConfig]' passed (0.000 seconds).
Test Case '-[LogicTests testMultiDelegate]' started.
LogicTests.m:105: error: -[LogicTests testMultiDelegate] : 'gTestMultiDelegateVar ==
2 + 2 * 1' should be true. Adding twice '1'... Should be == 6 but now it's 6
12. 30.01.15 12
Сборка проекта агентом сборки
Коммандная строка
Комманда xcodebuild:
xcodebuild -project $ProjectName -alltargets -configuration
$ConfigurationName
-alltargets – сборка “рабочего” Target и Target c юнит-тестами
15. 30.01.15 15
Контроль за «чистотой» кода
Анализ каждого этапа работы сборочного
агента
Формат предупреждений одинаковый:
Classes/(.*?.m:d+).*?warning:(.*)
Classes/FlipsideViewController.m:18: warning: unused variable 'rentPrice'
16. 30.01.15 16
Работа с ветвями VCS
Конец итерации: создание ветви Test
Итерация:
− Исправление ошибок в Test, слияние с Trunk
− Текущая работа в Trunk
Конец итерации: создание ветви Production
goto begin
18. 30.01.15 18
Манифест процесса разработки
Юнит-тесты
Анализаторы кода
Система CI не должна долгое время
находиться в состоянии «неудачная сборка»
Частые коммиты
19. 30.01.15 19
Результаты ввода
Избавление разработчиков от рутины
− Сборка, анализ
− Предоставление результатов сборки
Повешение текущего качества продукта
− Юнит-тесты
− Своевременное исправление ошибок