Почему важен CI для мобильной разработки
Continuous Integration (CI) — в дословном переводе «непрерывная интеграция». Под интеграцией понимается связь отдельных частей кода приложения между собой в единый продукт.
CI — это автоматизированный процесс, включающий в себя сборку, развертывание и тестирование приложения без участия человека.
Очень часто в разработке ПО можно встатить комбинацию CI/CD или CICD. Подразумевается комбинация непрерывной интеграции (continuous integration) и непрерывного развертывания (continuous delivery или continuous deployment) программного обеспечения в процессе разработки. CI/CD объединяет разработку, развёртывание и команду, ускоряя процесс сборки, тестирования и развёртывания приложения.
Типы процесса сборки билда мобильного приложения
После завершения разработки кода, разработчики добавляют сформированный файл в систему контроля версий (от англ. Version Control System, VCS). VCS является место хранения кода, где сохраняются все изменения файлов с историей изменений (кто и когда внес изменения).
Для превращения набора файлов с расширением в мобильное приложение необходимо собрать билд. Сборка билда представляет собой создание единого запускаемого файла из набора файлов исходного кода. Данный процесс можно представить в 3-х типах:
- Ручное
Ручная сборка полностью выполняется разработчиком, из-за чего является длительным и дорогостоящим процессом, обладающим своими сложностями. Для ручной сборки билда необходимо помнить, что в каком порядке нужно запустить, между какими файлами существуют зависимости и т.д.
- Полуавтоматическое
Выполняется разработчиком с использованием специальных программ сборки билдов. Такая сборка билда заметно упрощает жизнь разработчика, так как процесс сборки настраивается один раз, а после просто запускается вводом команды. Этот метод сборки считается полуавтоматической сборкой, так как человек участвует в процессе, занимаясь настройкой и вводом команды.
Сборка билда является частью работы. Для получения готового приложения необходимо запустить его. Запуском собранного билда занимается сервер приложения. Для запуска сервера приложения необходимо положить билд в директорию, запустить сервер предварительно настроив службу. Данный процесс также считается полуавтоматическим, так как разработчик занимается переносом сборки, настройкой и включением.
- Автоматическое
Автоматическое превращение набора файлов исходного кода в готовое к установке приложение без участия человека - CI.
CI забирает изменения из репозитория с кодом без участия человека. Возможны два варианта настройки:
- CI опрашивает репозиторий раз в N часов/минут, о наличии обновлений.
- Репозиторий связывается с CI при наличии обновлений.
После получения CI изменения, запускается сборка билда и автотесты. В случае неудачной сборки система направляет электронное письмо добавленным в проект заинтересованным лицам (ПМ, Разработчик и т.д.). Если сборка прошла успешно, CI разворачивает приложение на тестовой машине.
Статистика
По статистике, оборка одного билда без CI/CD занимает около 40 минут времени разработчика. В день происходит в среднем 2-3 сборки.
Итого: в день разработчик должен потратить около 2-х часов рабочего времени на сборку билдов, вместо прямой разработки мобильного приложения с полной оплатой этих часов.
При 5ти дневной 8ми часовой рабочей неделе, за год из возможных 1976 рабочих часов разработки, разработчик потратит 1482 часа на разработку мобильных приложений, и 494 на сборку и развертывание билдов, что является четвертью рабочего времени. Таким образом, стоимость разработки мобильного приложения возрастает.
Важность CI в мобильной разработке
CI — непрерывная интеграция, проверяющая приложение раз в заданный период на наличие неисправностей без участия человека.
CI особенно актуален для средних и больших команд, где разработкой кода одного приложения занимается несколько разработчиков. CI позволяет быстро обнаружить проблемы, когда по отдельности части кода работают, а вместе - нет. Быстрое обнаружение подобных проблем снижает стоимость их исправления.
Основные задачи CI:
- Проверка наличия обновлений в коде;
- Сборка билда;
- Прогон автотестов;
- Разворот приложение на тестовом стенде;
- Прогон тестов Postman на тестовом стенде;
- Оповещение всех заинтересованных лиц о результатах сборки и тестирования по email.
CI позволяет:
- Освободить время разработчика, затрачиваемое на процесс сборки и развертывания для других целей;
- Значительно удешевить процесс, так как стоимость работы одного программиста стоит дороже работы любой системы;
- Исключить ошибки человеческого фактора;
- Проводить проверки после каждого изменения в системе, выявляя проблемы на самых ранних стадиях;
- Запускать автотесты, создавая дополнительные барьеры с целью не допустить ошибки в релиз. Не допускает нерабочие билды.