Локальная автоматизация билдов(Crashlytics + Slack + FastLane)

в 12:46, , рубрики: android development, fastlane, Разработка под android

Автоматизация билдов(Crashlytics + Slack + FastLane)
Раньше (Черно-белая картинка, угрюмый разработчик сидит за столом)
1. Повышает версию кода в build.gradle
2. Собирает билд
3. Грузит билд в crashlytics
4. Пишет в слак что залил новый билд
Теперь (Яркая картинка, веселый парень):
консоль: fastlane new_build

А теперь серьезно. В нашем деле нужно автоматизировать все, и в этой статье я расскажу как автоматизировать выпуск билдов с помощью fastlane.
Fastlane — это продукт от fabric который помогает автоматизировать создание билдов под android,ios и mac. Я работаю на mac и буду рассказывать именно про установку на нем.

Несколько подготовительных шагов:

  1. Вам потребуется установить xcode (Вместе с ним устанавливаются нужные библиотеки)
  2. Установить сам fastlane. Нажимаем тут и выбираем что хотим подключить и скачиваем архив
  3. Внутри найдете файл installer/install. Устанавливаем его (Скорее всего вам потребуется включить в настройках безопасности возможность устанавливать не со стора)
  4. И последний скучный шаг, в консоле пишем:
    cd /path_your_project
    fastlane init
    это создаст папку fastlane в вашем проекте.

И когда все подготовительные шаги завершены, начинается самое интересное. В папке fastlane есть файл Fastfile (Ребята не заморачивались с названиями), это скрипт на ruby.
Сразу нужно понять два основных понятия lane и action.
Lane — это набор action которые будут исполнены. Их может быть несколько они могу отличаться друг от друга по, например, запускаемому gradle task. И мы будем запускать непосредственно Lane
Action — это действия которые может совершать fastlane. Вот набор доступных Action

И теперь немного кода:

# Название lane - test (вызвать его из консоли : fastlane test)
lane :test do
  # Выполняется билд приложения 
  gradle(task: "assembleDevDebug")

  # Дальше загрузка в crashlytics
 crashlytics(
    api_token: "api_token",
    build_secret: "build_secret",
    emails: "name@gmail.com, ivan@gmail.com",
    # Это путь к файлу откуда подтягиваем note для крашлитики 
    notes_path:"/Users/Android/notes.txt"
  )
  slack(
      # У слета есть web hook, который указывает в каком канале создавать меседж 
     slack_url: "https://hooks.slack.com/services/dddd/ddddd/ddddd",
     icon_url: "https://icon.png",
     username: "Android",
     default_payloads: [:test_result,:last_git_commit_message],
     payload: {"Build Date" => Time.new.to_s,},
     message: message
  )
end

Все возможности кастомизации action можно посмотреть по ссылке

То что мы сделали уже довольно неплохо. Мы можем через одну строчку собрать проект загрузить его в crashlytics и написать об этом сообщение в slack. Кстати вот так оно выглядит:

Локальная автоматизация билдов(Crashlytics + Slack + FastLane) - 1

На реальных проектах возникает потребность собирать разные сборки для разных целей, например: на живой сервер для заказчиков и на тестовый для тестировщиков.
Это можно сделать через product flavor в gradle. Если эта статья будет интересна читателям в следующей я расскажу как сделать возможность созвать разные сборки под разные нужды, авто инкрементировать версию кода в нужных сборках и писать об этом в slack.

Автор: palamarenco

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js