CI на GitLab: как настроить непрерывную интеграцию

CI на GitLab: как настроить непрерывную интеграцию

12.01.2021
# Для_разработчиков Разработка
Author avatar
Кирилл ЖадаевiOS разработчик

Одной из основных практик экстремального программирования является непрерывная интеграция (Continuous Integration, CI). Она проявляется в постоянном слиянии рабочих копий проекта в основную ветвь разработки и выполнении автоматических сборок для мгновенного выявления ошибок и их решения. Помимо этого, использование CI значительно экономит время разработки, поскольку отпадает необходимость вручную проводить сборки проектов.

Сегодня мы расскажем, как реализовали CI для одного из наших проектов на репозитории Gitlab.

Этапы разработки

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

Этот процесс реализуется благодаря инструменту fastlane – системе автоматической сборки. В ней содержатся файлы с исполняемыми скриптами. При сборке через CI она отправляет сообщения в Slack, проводит сборку на firebase, реализуя файл с разрешением .ipa для iPhone, и обновляет статус задачи в Jira.

Теперь остановимся на каждом этапе подробнее.

1. Загрузка кода

Когда разработчик решает добавить изменения в основную ветвь разработки develop, сторонний CI замечает это, обращается к коду проекта в репозитории и начинает сборку исполняемого файла.

2. Исполнение файлов fastlane

После этого CI исполняет команды, прописанные в скриптах (обращается к Podfile проекта, устанавливает необходимые зависимости, обращается к аккаунту разработчика Apple для подключения сертификатов, осуществляет сборку проекта, отправку файла в консоль firebase и отправку сообщения в Slack).

3. Подключение сертификатов для сборки с Apple

Когда в аккаунте разработчика Apple заводится проект, сертификация приложения может происходить двумя способами:

  • автоматически;
  • вручную.

Более надёжным вариантом при работе с CI является ручное подключение сертификатов. Поэтому мы вручную скачивали provision profiles с Apple Developer и подключали различные сертификаты: debug для запуска в режиме отладки или release для выпуска продукта.

4. Изменение номера сборки

В fastfile есть возможность совершать вспомогательные действия, прописывая некоторые полезные команды. Например, поднимать номер сборки, чтобы не делать этого вручную.

5. Установление зависимости (библиотеки, поды)

В fastfile прописывается, какие поды устанавливать для конкретного таргета. При этом сервер CI скачивает и устанавливает их самостоятельно.

6. Сборка с помощью функции gym

Указываем в параметрах таргет сборки, Bundle identifier, имя проекта, scheme и другие данные.

7. Отправка на firebase, отправка сообщения на Slack и обновление в Jira

Интеграция со Slack и Jira даёт возможность получать мгновенные отчёты о результатах тестирований и статусах работы.

Отчеты о результатах тестирования и статусах работы

8. Сборка готова к тестированию

Сборка проекта хранится на Firebase. Чтобы тестировщики могли получить доступ к этому сайту, в настройках предоставляется доступ по e-mail. После этого приложение скачивается и тестируется.

В случае, если реализация прошла успешно, разработчик получает следующий вывод в GitLab:

Если же в коде была ошибка, то она указывается в специальной консоли GitLab.

Трудности проекта

Сложность нашего проекта состояла в необходимости параллельной разработки двух таргетов – копий проекта, написанных на одном исходном коде, но с разными настройками. Так как фактический сервер проекта уже функционировал, действия в процессе разработки могли привести к нежелательным последствиям.

Чтобы не повлиять на работу фактического сервера, и команда разработчиков могла проводить необходимые тестирования, был создан тестовый сервер. Он являлся абсолютной копией рабочего сервера, но не мог оказать реального воздействия на систему, поэтому для успешной работы CI было необходимо собирать 2 таргета отдельно.

Результат

В результате наша команда реализовала успешную непрерывную интеграцию для проекта, сократив значительную часть времени при разработке. Если вы хотите использовать такой же метод для своего проекта, пишите нам, и мы вместе создадим качественный и функциональный продукт!

Author avatar
Кирилл ЖадаевiOS разработчик
Поделись статьей в соцмедиа:
Рекомендуемые статьи
Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Joy Dev в топе рейтинга Tagline 2023 среди лучших IT-компаний России

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Призовое место “Real Cosmetology” в конкурсе Золотое Приложение

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Золото в конкурсе Workspace Digital Awards 2023

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Хронофаги и как их усмирить

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Шаг за шагом: настройка окружения для Kotlin Multiplatform Mobile

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Cофт скилы: как получать больше за красивые глаза

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение

Площадки для видеостриминга: обзор-сравнение