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

GitHub Actions для Android

Valery
April 28, 2020

GitHub Actions для Android

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.