# Автоматизация цикла разработки/CI

# Описание

CI (Continuous Integration или Непрерывная интеграция) – это автоматическая сборка программного обеспечения и его тестирование на работоспособность.

# Почему ветка важна?

  • Настроенный CI помогает быстрее доносить изменения кода на сервера.
  • Тестировщики могут сразу узнавать в какой момент развернулась новая версия и приступать к её тестированию.
  • Запуск автотестов в окружении приближенном к боевому.
  • Гарантия стабильности основной ветки разработки. Это даёт возможность спокойного создания новых фич и релиз веток.
  • Непрерывная интеграция означает, что мы на каждый коммит нашей ветки понимаем готовность нашей ветки сливаться в trunk.

# Что будет если не настроить CI?

  • Увеличивается время на тестирование
  • Увеличивается время на сборку и развёртывание ПО, так как это происходит вручную
  • Отнимает время команды на ту самую сборку и развёртывание, когда команда бы могла заниматься в это время исправлением багов или написанием новых фич.
  • Возможно придётся изменять статусы тасок вручную

# На кого может быть делегирована?

  • Тимлид ниже уровнем
  • DevOps - специалист
  • Разработчик

# Примеры поведения

# Примеры плохого поведения

  • Дёмонстрация заказчику без тестирования, так как у команды не было времени на ручное развёртывание кода или не было ответственного за это
  • Программист во время разработки проверяет только локально, после выкатки на прод., он ломается. А разработчик говорит: "У меня локально то все работает". Как итог недовольные клиенты и заказчик. Решение: иметь два окружения с настроенным CI, одно для разработчиков, другое для тестировщиков.
  • Автотесты проходят на локальном окружении, а на серверах падают
  • Нет возможности быстро откатывать прод. к старой, рабочей версии

# Примеры хорошего поведения

  • В компании настроен стандартный процесс по настройке СI (есть стандартные конфигурации)
  • В компании настроены системы для автоматического развёртывания (например: Jenkins, Kubernetes)
  • Настроены оповещения о начале сборки и её окончании, удобным для команды способом (например: оповещения в чат telegram)
  • Используемый task manager интегрирован в CI, что помогает автоматически менять статусы у задач
  • Версионность билдов
  • Настроена возможность создавать ветки релиза из протестированного билда

# Способы прокачки

# Практика

# Консультации

  • Telegram-чат TL Bootcamp.
  • DevOps - инженеры, разработчики в вашей компании, кто уже этим занимался.

# Теория

# Книги

# Видео

# Статьи