# Continuous Integration
# Описание
CI (Continuous Integration или Непрерывная интеграция) – это автоматическая сборка программного обеспечения и его тестирование на работоспособность.
# Почему ветка важна?
- Настроенный CI помогает быстрее доносить изменения кода на сервера.
- Тестировщики могут сразу узнавать в какой момент развернулась новая версия и приступать к её тестированию.
- Запуск автотестов в окружении приближенном к боевому.
- Гарантия стабильности основной ветки разработки. Это даёт возможность спокойного создания новых фич и релиз веток.
- Непрерывная интеграция означает, что мы на каждый коммит нашей ветки понимаем готовность нашей ветки сливаться в trunk.
# Что будет если не настроить CI?
- Увеличивается время на тестирование
- Увеличивается время на сборку и развёртывание ПО, так как это происходит вручную
- Отнимает время команды на ту самую сборку и развёртывание, когда команда бы могла заниматься в это время исправлением багов или написанием новых фич.
- Возможно придётся изменять статусы тасок вручную
# На кого может быть делегирована?
- Тимлид ниже уровнем
- DevOps - специалист
- Разработчик
# Примеры поведения
# Примеры плохого поведения
- Демонстрация заказчику без тестирования, так как у команды не было времени на ручное развёртывание кода или не было ответственного за это
- Программист во время разработки проверяет только локально, после выкатки на прод., он ломается. А разработчик говорит: "У меня локально то все работает". Как итог, недовольные клиенты и заказчик. Решение: иметь два окружения с настроенным CI, одно для разработчиков, другое для тестировщиков.
- Автотесты проходят на локальном окружении, а на серверах падают
- Нет возможности быстро откатывать прод. к старой, рабочей версии
# Примеры хорошего поведения
- В компании настроен стандартный процесс по настройке СI (есть стандартные конфигурации)
- В компании настроены системы для автоматического развёртывания (например: Jenkins, Kubernetes)
- Настроены оповещения о начале сборки и её окончании, удобным для команды способом (например: оповещения в чат telegram)
- Используемый task manager интегрирован в CI, что помогает автоматически менять статусы у задач
- Версионность билдов
- Настроена возможность создавать ветки релиза из протестированного билда
# Способы прокачки
# Практика
- Чтобы отработать навыки по настройке CI, вы можете на своём компьютере развернуть VM или Vagrant настроить как сервер, и попробовать самостоятельно установить необходимую систему для развёртывания и настроить её.
- Попросить у команды или у руководства возможность, настроить CI для следующего стартующего проекта
- Пройти различные курсы, например:
# Консультации
- Telegram-чат TL Bootcamp.
- DevOps - инженеры, разработчики в вашей компании, кто уже этим занимался.
# Теория
# Книги
- Джез Хамбл, Дэйвид Фарли Непрерывное развёртывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ
- Философия DevOps. Искусство управления IT - лучше в оригинале
- Continuous delivery. Практика непрерывных апдейтов
# Видео
- Илья Климов — Ламповый CI/CD. Как и с чего начать
- Лучшие практики CI/CD с Kubernetes и GitLab (Дмитрий Столяров, Флант, HighLoad++ 2017)
- DevOps-Projects
- Инфраструктура для мобильной разработки
- Прагматичный CI/CD / Дмитрий Воронин