Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

«Не збирай білд руками». Історія однієї автоматизації

Привіт, мене звати Влад Хамбір, я керую командою мобільної розробки iOS-застосунку у стартапі AlphaNovel від венчур білдера SKELAR. Ми створюємо маркетплейс романтичних новел і коміксів для читачів і письменників з усього світу.

Якщо говорити про технології, то 99% нашого UI написано на SwiftUI, а ще ми тісно дружимо з автоматизацією — щоб прискорити роботу, оптимізувати процеси та посилити девелопмент.

У цій статті я розкажу, як ми разом з командою економимо час та автоматизуємо роботу. Сподіваюсь, наш приклад буде корисним спільноті. Enjoy 😏

Одразу невеличкий дисклеймер про автоматизацію і для чого вона. Більше часу = більше розвитку, відпочинку та якісної роботи. Тож не треба зволікати та витрачати час на рутинні справи, нумо їх автоматизувати!

Таски — не від слова «таскати»

Більшість команд розробників працюють у знайомих трекінгових системах і «таскають» свої таски по бордах у Jira, Trello чи ще деінде.

А як часто ти або твоя команда забувала оновлювати статус задачі? А тепер уяви світ, де задачі по борді «гуляють» самостійно, а розробнику не потрібно за ними доглядати — вони наче підросли та пішли у самостійне життя.

Як цього досягти? Автоматизувати.

Ось реальний приклад з мого проєкту. Маємо автоматизацію в Jira, яка за нас оновлює статус задач. Це дозволяє зекономити час на менеджмент — я витрачаю більше ресурсів на код і не думаю про актуалізацію борди.

Така автоматизація надає вебхук, який можна викликати звідки завгодно, після чого задача змінить свій статус із Code Review на Testing. Твій PM радітиме як дитина, а ти назавжди забудеш про ручне оновлення борди 🤗.

Головне питання — звідки та коли викликати цей вебхук? Відповідь нижче.

Не збирай білд руками

Якщо твій код готовий, саме час відправити його на ревью чи віддати новий білд тестувальникам. Цей процес можна автоматизувати, використовуючи віддалений комп’ютер або сервіси для CI/CD типу Bitrise, Circle CI та інші.

Все, що тобі знадобиться, це:

  • написати скрипти або використовувати вже наявні для збірки білдів (ми використовуємо fastlane);
  • налаштувати тригери для автоматичного виклику скриптів;
  • запушити зміни у відповідну гілку git-а;
  • використовувати звільнений час (від 10 до 30 хвилин) для інших задач.

Якщо ти засетапив весь перелічений флоу — саме час додати до скрипта виклик вебхука, який оновить статус твоєї задачі.

Делегуй частину Code Review на бота

Якщо під час code review ти звертаєш увагу стайлгайди, наявність «мертвого коду», правильність назв комітів і відсоток покриття тестів — у мене для тебе хороша новина — ти можеш цього не робити.

Щоб автоматизувати процес code review, ми використовуємо Danger. Цей інструмент інтегрується в наш CI/CD, автоматично формує звіти по кожному pull request і відправляє їх від імені бота. В цей звіт входить результат перевірки базових речей, на які ревьювер може більше не витрачати свій час.

У нашому випадку Danger використовує статичні аналізатори коду:

  • Periphery — для пошуку «мертвого коду»;
  • SwiftLint — для відстеження стайлгайду.

Не пиши CHANGELOG двічі

Є два варіанти — ти ведеш ченжлог руками або ти не ведеш його зовсім. Для обох випадків у мене для тебе є пропозиція: хай changelog веде за тебе твоя борда з тасками.

В 99% випадках твій changelog буде збігатися із задачами, які були на тебе заведені в борді. Не складно здогадатися, що наступний крок на шляху автоматизацій — генерування changelog з борди.

Наприклад, у Jira є підтримка релізів, куди потрапляють усі задачі, що йдуть у реліз. І як тільки ти натиснеш на кнопку Release, то Jira може сформувати changelog-репорт і відправити його куди тобі зручно. Ми свій changelog відсилаємо в окремий канал в Slack, щоб зберегти історію змін і сповістити команду про успішний реліз.

Так виглядає автоматизація:

А ось такий changelog прилітає нам у Slack:

Писати моки для тестів — брудна робота

Якщо ти розробник і пишеш тести — тримай цукерку 🍬. А тепер скажи, як ти готуєш тестові дані? Якщо пишеш їх руками — цукерку треба буде повернути 🙃.

У нас на проєкті всі дані для тестів генеруються автоматично, для цього ми використовуємо інструмент під назвою Sourcery. Це дозволяє нам легко та без додаткової роботи підготувати необхідні моки чи фейкові дані. Як результат — ми виграємо багато часу та можемо зосередитись на написанні самих тестів.

А недоліки є?

Головний мінус автоматизації (одночасно її ключовий плюс) — це час.

Зрозуміло — щоб налаштувати автоматизацію процесів, потрібно витратити декілька годин, днів або навіть тижнів. Спочатку, щоб проаналізувати існуючі процеси, потім — щоб налаштувати технічні рішення.

Але ж час, проінвестований в автоматизацію процесів, подарує набагато більше value в майбутньому. Ви не лише економитиме ресурси, а й отримаєте додаткову цінність для виконання важливіших задач. А тому краще витратити 2 години на автоматизування, ніж на рутинні справи. Як результат — виграти додатковий час у майбутньому та позбавитись мануальної роботи.

І все ж позитив від автоматизації — не лише час. Не забувай, що правильно налаштована автоматизація не може помилитись, забути оновити статус задач або не встигнути зробити code review через велику кількість завдань. Краще делегувати такі функції на автоматизацію, щоб не хвилюватися за якість концентрації для виконання ручної роботи.

Можу дати пораду — їжте слона шматочками або, в нашому випадку, — автоматизуйте процеси поступово. Згодом помітите, що не ви працюєте на автоматизацію, а вона на вас. У вас з’явиться вільний час — вгадайте, куди його краще інвестувати? Звісно, в реалізацію нових автоматизацій.

Наш підхід і плани інтеграції автоматизації

Впровадження автоматизації — це ітераційний процес. Всі практики, що я описав вище, були розроблені та почали використовуватись на нашому проєкті поступово — впродовж одного року.

Далі плануємо лише продовжувати автоматизувати процеси. З найближчих ідей — написання End-to-end тестів.

End-to-end тести — це автотести, які симулюють реальне використання системи нашими користувачами.

Наприклад, у нашому продукті — застосунку для читання новел і коміксів, кожен юзер проходить насичений флоу. Так, новий користувач починає з онбордингу, де розповідає зокрема про свої книжкові уподобання — це допомагає нам підбирати найрелевантніші рекомендації для кожного. Протягом усього періоду користування застосунком, читачі обирають книжки або шукають їх за допомогою фільтрів за жанрами, персонажами тощо.

Наразі перед кожним релізом всі ці процеси тестуються вручну нашою командою manual QA — це забирає багато ресурсів команди, щоб перевірити всі можливі сценарії та гарантувати якість. Ми можемо автоматизувати тестування всіх процесів: від реєстрації до пошуку книги та навіть її читання.

Такі тести — дуже корисні для бізнесу:

  • по-перше, вони «проганяють» наш застосунок, імітуючи поведінку реального юзера. Така перевірка гарантує якість продукту, а також зменшує ресурси спеціалістів на ручні тести;
  • по-друге, автоматизовані End-to-end тести мінімізують людський фактор при перевірці роботи системи. Це важливо, тому що дозволяє тримати стабільну якість продукту, не витрачати час на пошук помилок і максимально швидко повертати розробникам на доопрацювання певні фічі.

Замість висновку

Всі описані практики дозволяють кожному розробнику в нашій команді економити близько години робочого часу на день. Ми не витрачаємо час на рутинні речі, більше фокусуємось на задачах, не тримаємо в голові непотрібну інформацію.

Описані мною інструменти працюють у мобільній розробці, але головна ідея залишається незмінною — завжди можна автоматизувати рутинні задачі, щоб звільнити власний ресурс для важливіших тасок.

Куди далі?

Саме час переглянути свій проєкт та автоматизувати все, що можливо. До речі, не забудь поділитися в коментарях, які підходи та інструменти використовуєш ти для оптимізації свого робочого часу.

👍ПодобаєтьсяСподобалось24
До обраногоВ обраному9
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі