2. Непрерывная интеграция
Непрерывная интеграция (англ. Continuous
Integration) — это практика разработки программного
обеспечения, которая заключается в выполнении частых
автоматизированных сборок проекта для скорейшего
выявления и решения интеграционных проблем.
-- Wikipedia
3. Постулаты
• Система контроля версий
• Юнит-тесты
• Автоматическая сборка
• Автоматическая валидация кода
• Автоматический деплой
• Документация (RDD)
4. Система контроля версий
• Ведение журнала изменений
• “Машина времени”
• Авторство (по строкам, по файлам)
• Распределенность!
• Моментальное создание веток
• Хуки на пост- и предобработку
5. Юнит-тесты
Юнит-тесты позволяют проверить отдельные части
приложения (модули) на работоспособность, что
позволяет исключить регрессии в уже существующем
коде и помогает обозначить место в модуле, где была
допущена ошибка.
Приложение должно составляться из модулей, которые
собой представляют библиотеки, выполняющие строго
узконаправленные функции.
(Бредовый пример с Memcached, Брэдом Фитцпатриком и Козлом Фрэнком)
6. Покрытие кода тестами
• Писать тесты -- задача разработчика
• Покрывать тестами нужно все, что
можно покрыть
• Если даже кажется, что модуль
примитивен, занимает всего две строчки,
тесты все равно нужно написать
7. Тестовый фреймворк
PHPUnit:
https://github.com/sebastianbergmann/phpunit
(Поддержка самых свежих версий PHP)
11. Лицензии на TeamCity
• Professional (бесплатная,
20 билд-конфигураций, 3 билд-агента)
• Enterprise
• EAP
12. Что такое “Билд”
В системах интеграции под словом “билд” (сборка)
подразумевается успешное прохождение шагов,
заданных в билд-конфигурации.
Триггером билда является появление нового кода в
репозитории.
13. Наша билд-конфигурация
1. Получение исходных кодов из
репозитория
2. Запуск валидатора
3. Прогон юнит-тестов
4. Получение деплой-инструкций
5. Деплой
NB: Если хоть какой-то шаг завершается ошибкой, то билд признается неуспешным
14. Валидатор
PHPLinter:
https://github.com/robotis/PHPLinter
(Проверка качества исходных кодов модулей)
15. Валидация
Валидация осуществляется согласно описанным
правилам, в нашем случае мы ориентируемся на PEAR
Coding Standards, с небольшими изменениями.
Помимо исходного кода проверяется правильность
расположения и именования файлов,
согласно стандарту PSR-0.
16. Система деплоя
Fabric (Python):
http://docs.fabfile.org/en/1.4.3/index.html
19. Деплой
После успешного билда, Fabric переносит модули на
боевой сервер, где срабатывает отдельное приложение-
сборщик пакетов в формат PHAR.
Это усиливает защиту от несанкционированных
изменений исходных кодов модулей, а обертка для
управления модулями (mpr) позволяет приложению
автоматически скачивать нужные модули, а так же его
зависимости из нашего репозитория.