Continuous Integration. Разработка программного обеспечения,

Содержание

Слайд 2

Идеологически CI базируется на следующих соглашениях

часто (не менее 1 раза в день)

Идеологически CI базируется на следующих соглашениях часто (не менее 1 раза в
«заливать» свой код в репозиторий
писать автоматические тесты
запускать private builds (процесс сборки, который выполняется с использованием исходного кода, в данный момент находящегося в локальном репозитории разработчика)
не «заливать» неработающий код
чинить сломанный build немедленно
следить за тем, чтобы все тесты и проверки проходили
не выкачивать из репозитория сломанный код

Слайд 3

Continuous Integration

Continuous Integration

Слайд 4

Continuous Integration

Базовый процесс интеграции выглядит следующим образом:
Триггер. Событие, при котором запускается сборка

Continuous Integration Базовый процесс интеграции выглядит следующим образом: Триггер. Событие, при котором
продукта. Таким событием может быть: изменения в коде (push), определенное время, нажатие на кнопку.
После срабатывания триггера стартует сборка проекта из исходников.
Развертывание базы данных.
Развертывание приложения.
Тесты. Авто-тесты не являются обязательными, но их выполнение крайне желательно. Это один из важных пунктов хороших практик CI.
Статус, отчеты, уведомления по результатам сборки. После прогона тестов получаем результат сборки, детальные отчеты по каждому из этапов интеграции

Слайд 5

Build script

Скрипт сборки — это набор команд, которые будут выполнены при запуске

Build script Скрипт сборки — это набор команд, которые будут выполнены при
процесса интеграции. Чаще всего он выглядит как следующий набор шагов:
Очистка от результатов предыдущего запуска
Компиляция (или статический анализ кода для интерпретируемых языков)
Интеграция с базой данных
Запуск автоматических тестов
Запуск других проверок (соответствие код стандартам, проверка цикломатической сложности и т. д.)
Разворачивание программного обеспечения

Слайд 6

Автоматические тесты в CI

В CI используются тесты всех уровней за исключением исследовательских:
модульные

Автоматические тесты в CI В CI используются тесты всех уровней за исключением
(unit) тесты
компонентные тесты
функциональные тесты
системные тесты
По написанию и запуску тестов также принят ряд соглашений:
более быстрые тесты должны запускаться первыми
тесты должны быть разделены по категориям
на все баги должны писаться тесты
тест кейсы стоит ограничивать одной проверкой
тесты должны выполняться без ошибок при повторном запуске

Слайд 7

Преимущества CI

Прежде всего, это регулярная интеграция всего приложения.
Все делается автоматически, люди избавлены

Преимущества CI Прежде всего, это регулярная интеграция всего приложения. Все делается автоматически,
от рутины.
Экономия времени.
Работа над проектом прозрачна для всех участников команды. Становится проще ответить на вопросы что? где? когда?
Уменьшаются риски получить «гранату». Дефекты находятся раньше. Это достигается путем запуска тестов и ранней отдачи нового/измененного функционала на тестирование.
У нас есть всегда развернутое окружение для тестирования и демонстрации работы заказчику и прочим заинтересованным. Если ваша команда большая, и вы работаете одновременно в разных ветках репозитория. То теперь буквально в несколько движений вы можете настроить ветку кода на нужное окружение или собрать новое с нужной веткой.
Можно безболезненно эмитировать процесс деплоя на тестовых серверах.
Хорошая CI система позволяет поддерживать ряд инженерных практик (анализ кода, покрытие кода, юнит-тесты).

Слайд 8

Узкие места CI

В любом инструменте существует ряд нюансов. Чтобы эффект от использования

Узкие места CI В любом инструменте существует ряд нюансов. Чтобы эффект от
непрерывной интеграции был наибольшим рекомендуется использовать ряд общепринятых практик.
Частая синхронизация. В этом заключается основной смысл CI. Нельзя позволять разработчикам длительное время не интегрировать изменения. Хорошей практикой является создание отдельных веток кода и окружений для длительных фич и рефакторинга.
Решать все проблемы со сборкой максимально быстро. Это позволит избежать простоев. Настройте автоматические нотификации в случае упавшего билда. Это позволит разработчикам своевременно знать о проблемах. Не экономьте на железе. Сервер должен быть мощный.
Должным образом настройте инфраструктуру. Процесс сборки должен быть надежным.
Процесс сборки должен быть быстрым, не более 10 минут. Поэтому имеет смысл оптимизировать все шаги сборки. Во время сборки выполняйте только необходимые действия, ничего лишнего. Приемочные тесты не должны занимать много времени, т.к. любые простои не желательны. Пишите и прикручивайте к сборке авто-тесты. Тогда интеграция будет наиболее безопасной.
CI будет эффективен только тогда, когда вся команды его принимает.
Расширяйте возможности (анализ покрытия, статические анализаторы, статистика тестов).
Максимально адаптируйте окружение под production-версию.

Слайд 9

Создание проекта в Jenkins

Создание проекта в Jenkins

Слайд 19

Создание проекта в TeamCity

Создание проекта в TeamCity

Слайд 20

Создаем новый проект

Создаем новый проект

Слайд 21

Создание «build configuration» (конфигурации сборки)

Создание «build configuration» (конфигурации сборки)

Слайд 22

Добавление нового репозитория

Добавление нового репозитория

Слайд 23

Добавление нового репозитория

Добавление нового репозитория

Слайд 24

Добавление нового репозитория

Authentication method –способ аутентификации. Тут может быть и доступ без

Добавление нового репозитория Authentication method –способ аутентификации. Тут может быть и доступ
авторизации (если данные лежат на внутреннем сервере, например), и по ключу, и по паролю. Для каждого варианта дополнительные поля будут свои

Слайд 25

Настройка автоматического запуска задания

Настройка автоматического запуска задания

Слайд 26

Создание шагов сборки

Создание шагов сборки

Слайд 27

Создание шагов сборки

Создание шагов сборки

Слайд 28

Компиляция проекта

Компиляция проекта

Слайд 29

Добавление параметров сборки

Добавление параметров сборки

Слайд 30

Общий вид прошедших сборок

Общий вид прошедших сборок
Имя файла: Continuous-Integration.-Разработка-программного-обеспечения,.pptx
Количество просмотров: 33
Количество скачиваний: 0