Skip to content

Latest commit

 

History

History
96 lines (55 loc) · 10.6 KB

File metadata and controls

96 lines (55 loc) · 10.6 KB

CI 🚀

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

CICD

CD — это логичное продолжение CI:

  • Continuous Delivery автоматизирует подготовку к деплою, но требует ручного вмешательства;
  • Continuous Deployment убирает этот шаг и автоматически разворачивает изменения в продакшн. Выбор зависит от проекта и бизнес-требований;

Как работает CI/CD?

  1. Разработчик вносит изменения в коде локально;
  2. Изменения отправляются в удалённый репозиторий (GitHub, GitLab, Bitbucket и т. д.);
  3. CI-сервер автоматически запускает процесс сборки (сборка кода, линтинг, тестирование);
  4. Если сборка успешна, код можно развернуть на тестовый сервер или в продакшн (при использовании CD – Continuous Deployment);
  5. Если есть ошибки, CI-система может уведомляет разработчика (email, Slack, Telegram и др.);

Bundle (пакет или архив)

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

  • Для iOS, например, это .ipa файл, который затем устанавливается на устройства;
  • Для андроид - .apk;

Bundle id - уникальный идентификатор вашего приложения среди всех существующих приложений в мире. Нет в мире приложения в двумя одинаковыми bundle id.

При создании bundle id можно указать возможности для приложения: Push Notification, Apple Pay, App group и тп.

Сущность подписки, которая связана с аккаунтом разработчика. Для iOS существует несколько типов сертификатов:

  • Development - нужен для того, чтобы можно было сбилдить и запустить дебаг-конфигурацию приложения из Xcode на реальном устройстве

  • Distribution - используется для подписания приложений, которые будут распространяться в App Store или через Ad Hoc distribution. Для каждого типа распространения (App Store, Enterprise, Ad Hoc) можно использовать один и тот же сертификат, если они принадлежат одному аккаунту разработчика.

    ❗ distribution сертификатов может быть максимум 3 штуки

Один сертификат Development и один сертификат Distribution можно использовать для подписки всех приложений в рамках аккаунта разработчика. Выпускаются на 1 год.

Профили (Provisioning Profiles)

Профили - специальный файл, обеспечивающий доступ к некоторой функциональности в конкретной сборке вашего приложения

Профили настройки — это не сертификаты, но они тесно связаны с ними. Профиль настройки — связующее звено между конкретным приложением и конкретным сертификатом.

Они делятся на два типа:

  • Development Provisioning Profile используется для разработки и тестирования приложения на устройствах;
  • Distribution Provisioning Profile используется для распространения приложения через App Store или внутри компании. Каждое приложение должно быть подписано сертификатом и связано с соответствующим профилем, чтобы приложение могло быть установлено или распространено.

Вида дистрибуции профилей:

  1. Development создается с помощьюdevelopment сертификат и профиля , что позволяет сбилдить приложение на реальном устройстве и дебажить;

  2. Ad-hoc - экспортировать сборку в сервисы дистрибуции (н/р: Firebase), кроме TestFlight. Создается с помощью Distribution сертификат;

    При подписке приложения Ad-hoc профилем, в этом профиле должны быть явно указаны UDID всех устройств, на которых будет возможно тестирование;

    Максимальное количество устройств - 100, устройства берутся из списка устройств аккаунта разработчика;

  3. App Store позволяет экспортировать сборку в TestFlight и далее в App Store. Создается с помощью Distribution сертификат;

    При подписке приложения App Store профилем, UDID устройств указывать не требуется. Пользоваться приложением сможет любой, кто скачал его из TestFlight или App Store;

    B TestFlight можно добавить до 100 внутренних тестировщиков (моментально получают сборки) и до 10000 внешних (получают сборки после ревью от Apple);

Зачем все это?

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

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

Как долго сборка останется работоспособной? зависит от типа профиля и сертификата

Инвалидация профилей приводит только к тому, что вы не можете создать новые сборки.

Инвалидация сертификата ведет себя по разному в зависимости от типа:

  • Development и Ad-hoc - срок жизни сборки ограничен сроком жизни сертификата, приложенной к сборке. Инвалидация серта приведет к неработающим приложениям ;
  • TestFlight - имеет срок жизни в 90 дней с момента выкладки. По истечении 90 дней ее невозможно будет скачать, а уже скачанные сборки перестанут работать;
  • App Store - если приложение было выложено в App Store и затем скачано пользователем, приложение будет работать вечно, пока пользователь не удалит его самостоятельно;

Нюанс Nº1. Не подтягивается сертификат под профиль

Если вы часто используете проекты с автоматической подпиской Debug конфигураций, в определенный момент Xcode может отказаться билдить приложение на устройстве

Решение: зайти в Keychain и удалите руками указанный сертификат (на примере картинки это iPhone Distribution: ...), после чего убейте Xcode и запустите заново. Xcode скачает валидный сертификат и профиль, после чего все будет работать.

Нюанс Nº2. Ввод пароля

Если вы сгенерировали новые сертификаты, первая сборка на любом компьютере потребует ввода пароля от этого компьютера (относится в т.ч. к С)


4.2.1.5 Debug Theme | Back To iOSWiki Contents | 4.2.2 Routing Theme Folder