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

GitHub Actions для Android

Avatar for Valery Valery
April 28, 2020

GitHub Actions для Android

Avatar for Valery

Valery

April 28, 2020
Tweet

More Decks by Valery

Other Decks in Programming

Transcript

  1. КТО Я? • Android разработчик со стажем более 5 лет.

    • Участвовал в проектах с миллионной аудиторией. • Выступал на конференции Droidcon Vienna. • Работал на другом континенте.
  2. ЧТО ТАКОЕ GITHUB ACTIONS? Это новый функционал GitHub, который позволяет

    автоматизировать рабочий процесс: • Запускать Unit-, UI-тесты. • Запускать различные lint-проверки. • Публиковать/разворачивать приложение. • Отправлять оповещения в slack, email etc.
  3. ДОСТОИНСТВА GITHUB ACTIONS • Нет временных ограничений на сборку в

    открытых репозиториях. • Достаточное количество времени на сборку для приватных репозиториев. • Возможность запускать задачи на macOs. • Большое количество готовых actions, которые в большинстве случаев помогут решить задачу.
  4. ОГРАНИЧЕНИЯ GITHUB ACTIONS Количество минут отведенных на сборку в зависимости

    от аккаунта: • Free - 2000 минут в месяц. • Pro - 3000 минут в месяц. • Team - 3000 минут в месяц. • Enterprise - 50000 минут в месяц. Важно учесть, что для открытых репозиториев количество минут не ограничено. Количество параллельно выполняемых задач: • Free - 20 задач, 5 для macOs. • Pro - 40 задач, 5 для macOs. • Team - 60 задач, 5 для macOs. • Enterprise - 180 задач, 50 для macOs.
  5. ТЕРМИНЫ • Workflow - определяет набор задач и условий для

    их выполнения. • Job - описывает задачу в рамках workflow (например, запуск UI-тестов). • Step - описывает каждый шаг в рамках job (например, запуск сборки приложения). • Action - шаг, который может быть переиспользован в любом другом workflow. • Event - триггер, который запускает определенный workflow.
  6. DEVELOPMENT WORKFLOW Создадим новый workflow для development и feature веток.

    В нем будем запускать lint-проверки и unit-тесты. Так же сохраним результаты lint-проверок в артефакты.
  7. DEVELOPMENT WORKFLOW Создадим новый workflow для development и feature веток.

    В нем будем запускать lint-проверки и unit-тесты. Так же сохраним результаты lint-проверок в артефакты.
  8. DEVELOPMENT WORKFLOW Добавим новый шаг с запуском UI-тестов внутри GitHub

    Actions. Опишем условие, что данный шаг начинает свою работу только по успешному завершению шагов test и lint. Для запуска UI-тестовы будем использовать reactivecircus/android-emulator-runner@v2
  9. PR TO MASTER WORKFLOW Добавим новый workflow, который будет запускаться

    при создании Pull request в ветку master. Задача workflow - запускать UI тесты в Firebase Test Lab.
  10. PR TO MASTER WORKFLOW Перед тем, как запускать тесты, необходимо

    создать проект в Firebase. Затем создать Service Account, чтобы получить доступ к запуску тестов из CI. Для аккаунта необходимо дать следующие права: • Project > Owner. • Firebase > Firebase Admin. • Firebase Product > Firebase Test Lab Admin. После этого создать ключ и сохранить его в json формате.
  11. PR TO MASTER WORKFLOW Сам workflow разделим на несколько шагов:

    1. Сборка debug apk и androidTest apk. 2. Запуск тестов в Firebase Test Lab.
  12. PR TO MASTER WORKFLOW Следующий шаг - запуск UI-тестов в

    Firebase Test Lab. Для этого будем использовать GoogleCloudPlatform/github-actions/setup- gcloud@master.
  13. UPD MASTER WORKFLOW Перед тем, как начать пользоваться Firebase App

    Distribution, необходимо: 1. Получить токен, который будет использоваться CI для публикации приложения. 2. Зарегистрировать приложение в Firebase.
  14. ЧТО ЕЩЕ МОЖНО СДЕЛАТЬ? • Добавить кеширование для ускорения сборки

    с помощью actions/cache@v1. • Добавить code-style проверки. • Автоматизировать публикацию приложения в Google Play.