- Определение CI (Continuous Integration):
- Что такое непрерывная интеграция.
- Цель: автоматизация сборки, тестирования и линтинга для уменьшения влияния человеческого фактора.
- Определение CD (Continuous Deployment/Delivery):
- Различие между Continuous Deployment и Continuous Delivery.
- Особенности мобильной разработки: обязательное ревью в магазинах приложений.
- Преимущества:
- Сокращение времени разработки и уменьшение time to market.
- Обеспечение стабильности и снижение ошибок за счёт автоматизированных процессов.
- Освобождение разработчиков от рутинных задач для сосредоточения на сложном функционале.
- Проблемы без автоматизации:
- Примеры ручного выполнения задач, длительная сборка на локальных машинах и т.д.
- Примеры применения CI:
- Автоматический запуск тестов и сборки при создании пул-реквеста.
- Автоматическая проверка качества кода (линтинг) и уведомления разработчику.
- Примеры применения CD:
- Автоматическая заливка сборок в Google Play.
- Пошаговая доставка приложения с этапом ревью и возможностью отката.
- Триггеры
- Пайплайны
- Задачи
- Шаги/скрипты
- Задачи
- Раннеры/билд агенты
- Кеширование
- Хранилище секретов
- Конфигурация пайплайнов
- Интегрированные решения:
- GitHub Actions - https://docs.github.com/ru/actions
- Есть переиспользуемые экшены, возможность писать собственные реализации
- Уменьшение дублирования через reusable workflow, composite actions, actions marketplace
- GitLab Pipelines
- https://docs.gitlab.com/ci/pipelines/
- https://habr.com/ru/companies/doubletapp/articles/712490/
- Свои инструменты уменьшения дублирования вроде:
- GitHub Actions - https://docs.github.com/ru/actions
- Отдельные CI-серверы:
- Jenkins
- TeamCity
- Облачные решения:
- Преимущества использования облачной инфраструктуры (GitHub Actions, GitLab).
- Заглушка для ссылки: [Ссылка на статьи об облачных CI/CD решениях]
- Облачные сторонние (не от провайдеров инструментария)
- Self-hosted варианты:
- Развёртывание билд-агентов на собственной инфраструктуре
- Использование контейнеров
- Внутри job
- Билд агент внутри контейнера
- Kubernetes или другие варианты билд-агентов по запросу
- Google Play publisher plugin https://github.com/Triple-T/gradle-play-publisher
- Fastlane https://fastlane.tools/
- danger-kotlin
- Github Actions
- Результаты unit тестов в виде отчёта Kotlin Kover https://github.com/EnricoMi/publish-unit-test-result-action
- Результаты Android Lint через Reviewdog моим экшеном https://github.com/IlyaGulya/android-lint-action
- Возможность писать какие-то куски на javascript https://github.com/actions/github-script
- Создание pull реквеста https://github.com/peter-evans/create-pull-request