Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Мобильный_DevOps.pdf

 Мобильный_DevOps.pdf

Alexander Blinov

November 17, 2018
Tweet

More Decks by Alexander Blinov

Other Decks in Programming

Transcript

  1. 1 Процессы маленькой команды 2 Переход к большой команде 3

    Подведение итогов Слайды goo.gl/5u2bv1 Содержание 4
  2. Контекст 7 1 Команда 3 человека 2 2 приложения в

    активной стадии разработки A Для соискателей B Для работодателей
  3. To Do Plan Decomposition Dev Dev Done Feedback Closed PORTFOLIO

    (Портфель) - Бизнес задачи Доска портфелей PORTFOLIO-1 PORTFOLIO-2 PORTFOLIO-3 Управления проектом
  4. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release Управления проектом MOB-1 MOB-2 Доска задач Release Applicant 4.2 Backlog MOB-3 MOB-4
  5. Типы сборок 12 1 Release Candidate 2 UI тесты 2

    Артефакт для тестирования Корректность основных сценариев 1 Собирает Антон на своем компьютере Собирает build server Bamboo 1 час на прогон End2end espresso тестов
  6. Много фичей и стабильный develop 21 Возможные решения 1 Фичитоглы

    + Легкие мерджи - Две версии каждой фичи 2 Фичеветки + Одна версия кода в приложении - Сложные мерджи на общем функционале
  7. VCS 22 develop Время разработки фичей PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458

    MOB-3459 MOB-3432 PORTFOLIO-1256 MOB-3461 MOB-3462 MOB-3464 MOB-3468 Git hook на именование ветки
  8. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release Управления проектом 23 MOB-1 MOB-2 Время релиза Release Applicant 5.2 Development Backlog PORTFOLIO-1 Decomposition
  9. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release 24 MOB-1 MOB-2 Время релиза Release Applicant 5.2 Development Backlog PORTFOLIO-1 DEV Управления проектом Настройка swimlane фильтров в JIRA
  10. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release 25 Полная картина Release Applicant 5.2 Development Backlog PORTFOLIO-1 DEV DONE MOB-1 MOB-2 MOB-3 Управления проектом Перемещение из Merged в Need Testing
  11. VCS 26 develop Релизы приложения PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458 MOB-3459

    MOB-3432 PORTFOLIO-1256 MOB-3461 MOB-3462 MOB-3464 MOB-3468 RELEASE-APPLICANT-5.2 MOB-3471 MOB-3476 MOB-3484
  12. VCS 27 develop Хотфиксы PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458 MOB-3459 MOB-3432

    PORTFOLIO-1256 MOB-3461 MOB-3462 MOB-3464 MOB-3468 RELEASE-APPLICANT-5.2 MOB-3471 MOB-3476 MOB-3484 MOB-3464
  13. Интеграции с JIRA 28 1 Ссылка на PR в задаче

    A Githook на названия ветки 2 Ссылка на Upsource Review в задаче 3 Перемещение задач при успешной сборке
  14. Code review 31 1 Style guide 2 Статический анализ 3

    Base line 4 Правило бойскаутов https://github.com/hhru/android-style-guide/ 5 Upsource Регулярный запуск статического анализа без baseline
  15. Boiler plate 32 1 Шаблоны кодогенерации Android Studio 2 Live

    templates Android Studio Plugins 3 Попробуйте кодогенерацию в этом порядке
  16. Признак Debug PreRelease Release Proguard - + + SSL Pinning

    - - + Подпись debug debug prod FirebaseConfig debug prod prod GCM debug prod prod Toothpick reflection code gen code gen Суффикс имени приложения dev.apk preRelease-XXXX.apk - Аналитика debug debug prod Fabric debug debug prod Особенности Работает только при установке из Google Play Типы сборок 34
  17. develop PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458 MOB-3459 MOB-3432 PORTFOLIO-1256 MOB-3461 MOB-3462

    MOB-3464 MOB-3468 RELEASE-APPLICANT-5.2 MOB-3471 MOB-3476 MOB-3484 MOB-3464 Pull Request 1 Night 2 35 3 Release Candidate 4 Release Виды сборок на CI
  18. Признак Pull Request Night Release Candidate Release Trigger Создание Pull

    Request или добавление комитов в Pull Request По расписанию Вручную Вручную Приложения Applicant RU Employer RU Все Опционально Опционально Тип сборки Debug PreRelease PreRelease Release Статический анализ + + без baseline - - UI тесты Smoke UI (<20min) + - - Публикация - Fabric Fabric Google Play - Internal testing JIRA Ссылка в задаче на PR Ссылка на билд Перемещение задач из Merged в NeedTesting Перемещение задач из Merged в NeedTesting - Github Результаты сборки - - - Upsource Создание ревью - - - Slack #android-pr #android-night #android-dev #android-dev Виды сборок на CI 36
  19. Шишки и грабли по билд серверу 38 1 Плагины —

    это зло 2 Хранение конфигурации в VCS
  20. Главная проблема UI тестов 41 “Мы написали тесты, что дальше

    с ними делать?” Безымянный тестописатель
  21. Как писать UI тесты? 42 1 Ненативные инструменты: Calabash, Appium,

    … 2 Инструменты запуска на псевдореальной среде: Robolectric 3 Платформенные инструменты: Espresso 4 Обертки над Espresso: Kakao, Barista
  22. Code CI Инфроструктура тестов 45 3 Test Runner Tests DB

    ➡ Marathon ➡ Orchestrator ➡ Spoon ➡ Fork ➡ Composer ➡ Nitrogen https://youtu.be/Sb0JWdLAgzk?t=14789
  23. Инфроструктура тестов 48 Code CI Test Runner Tests Openstf DB

    K u b e r n e t e s Docker Docker JIRA Githab Slack https://youtu.be/_21xcZk4_ZI 6
  24. Многомодульность и Gradle 50 Подключение зависимостей 1 ➡ implementation ➡

    api ➡ compileOnly 2 Подключение артефактов ➡ module ➡ aar 3 Gradle cache А чем занят ваш gradle?
  25. Flavor-ы и параллельная сборка 51 Анализируем gradle build scan Сборка

    модулей :transformClassesAndResourcesWithProguardForHhruDebug :transformClassesAndResourcesWithProguardForJtbDebug :transformClassesAndResourcesWithProguardForAzDebug Flavor-ы зло
  26. Mainframer 52 Вызываем команду сборки загрузка файлов на суперкомп загрузка

    файлов на локальный компьютер Сборка проекта Оповещение о сборке
  27. From zero 54 Выбор и настройка CI 1 Наработка практики

    Code review 2 ➡ Сборка по Pull Request ➡ Сборка Release Candidate ➡ Расширенный code style ➡ Статический анализ ➡ Upsource Настройка процессов для желаемых результатов 3 ➡ Выработка правильного flow для задачи и хотелок ➡ Проработка веток в SVC ➡ Интеграции сервисов ➡ Автоматизация рутинных шагов
  28. To Hero 55 Ускорение сборки 4 Тестирование 5 ➡ Изоляция

    и модуляризация ➡ Оптимизация билд скриптов ➡ Mainframer ➡ Написание небольшого числа тестов ➡ Поднятие инфраструктуры Шаблонизация 6 ➡ Live templates ➡ Android Studio Templates ➡ Plugins
  29. Домашнее задание 56 Поднять CI на локальной машине 1 Подумать,

    на какую рутину вы постоянно тратите много времени 2
  30. О чем мы говорили? - Много фичей - Консистентность кодовой

    базы - Билдсервер Антон - Время релиза - Время сборки - Распределение нагрузки Выводы Автоматизируйте всё что автоматизируется! Посчитайте выгоду от автоматизации Делитесь решениями и идеями 58 Процессы в маленькой команде Переход к большой команде Подведение итогов Слайды t.me/xanderblinov Контакты