15 KiB
English | Español | Français | Português | Deutsch | 中文 | 日本語 | 한국어 | العربية | हिन्दी | Русский
Assayo
Создаёт HTML-отчёт с анализом статистики коммитов:
- текучка кадров и состав команд;
- местоположение разработчиков;
- график релизов и отпусков;
- темп работы и количество переработок;
- зоны ответственности, объем фичей и багов;
- стоимость фичей и проекта в целом;
- стиль работы коллег;
- места для рефакторинга, удалённые файлы и т.п.
Ссылки: demo, online version, docker, reddit, habr
Видео: english, español, русский
Содержание
ОТЧЁТ ПО СТАТИСТИКЕ КОММИТОВ
📈 Как создать и посмотреть отчёт?
Через публичный сервер
- перейдите на сайт
- следуйте инструкциям
Используя библиотеку NodeJS
- выполнить
npx assayo - открыть
./assayo/index.html
Используя библиотеку PHP
- выполнить
composer require bakhirev/assayo - выполнить
vendor/bin/assayo - открыть
./assayo/index.html
Используя библиотеку Python
- выполнить
pipx install assayo - выполнить
assayo - открыть
./assayo/index.html
Используя библиотеку Ruby
- выполнить
gem install assayo - выполнить
assayo - открыть
./assayo/index.html
Используя библиотеку Go
- выполнить
go get github.com/bakhirev/assayo - выполнить
go install github.com/bakhirev/assayo - выполнить
assayo - открыть
./assayo/index.html
Без установки библиотек
- скачать этот репозиторий
- перетащить файл
log.txtв папку/build - открыть
/build/index.html - или перетащить папку
/buildк себе в репозиторий (туда, где лежитlog.txt). Можно сменить название. Например с/buildна/report
В этом случае важно, чтобы файл log.txt был сгенерирован командой для офлайн просмотра.
Через github actions
Добавьте скрипт в папку .github/workflows/ или используйте этот action из официального магазина. Готовый свежий отчёт по проекту будет лежать в артефактах.
С помощью приватного сервера
- скачайте docker образ;
- поднимите его в локальной сети;
- для просмотра отчётов используйте веб-интерфейс указывая ему адресс, где лежат данные, в URL-параметре
dump:
http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - URL адресс контейнера assayo, он слушает 80 порт;
you_url - URL адресс вашего контейнера с логами git;
По умолчанию образ запустится по адресу http://127.0.0.1:80/ Если не получилось проверьте свободен ли у вас 80 порт.
🎭 Как объединить авторов коммитов в отчёте?
В корневой директории вашего проекта нужно создать файл .mailmap
Пример содержания файла:
Alex B <alex@mail.uk>
Alex B <alex@mail.uk> <alex@gov.tk>
Alex B <alex@mail.uk> <bakhirev@ya.kz>
Alex B <alex@mail.uk> <man64@yahoo.com>
Подробнее про формат этого файла можно прочитать тут.
📤 Как выгрузить данные из git в txt файл?
Для онлайн просмотра
В корневой директории вашего проекта выполнить:
Для офлайн просмотра
Git создаст файл log.txt. Он содержит данные для построения отчёта. Разница между онлайн и офлайн форматом в наличие обёртки для строк. Оффлайн формат будет подтягиваться, как js файл если вы просто открыли /build/index.html
Если вы используете PowerShell в Windows
По умолчанию, поток вывода не совпадает с UTF-8 и итоговый файл становится нечитаемым. Перед сохранением файла с логом вы можете изменить кодировку командой:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Или откройте сохраненный файл и вручную измените кодировку на UTF-8.
🗃️ Как посмотреть отчёт по группе микросервисов?
- Сгенерировать для каждого микросервиса файл
log.txt(log-1.txt,log-2.txt,log-3.txtи т.д.). Вы можете сделать это в ручную, или использовать модуль Assayo Crawler для автоматического сбора логов; - См. «Как посмотреть отчёт онлайн?». На последнем шаге перетащить сразу все файлы в окно браузера.
- См. «Как посмотреть отчёт офлайн?». На втором шаге перетащить все файлы микросервисов (
log-1.txt,log-2.txt,log-3.txtи т.д.) в папку отчета (/build).
ЕЖЕДНЕВНЫЕ ПРАКТИКИ В ПРОЕКТЕ
📝 Как подписывать коммиты?
Следуйте практике Conventional Commits 1.0.0. Например:
JIRA-1234 feat(profile): Added avatar for user
- номер задачи в таск трекере
(JIRA-1234) - тип работы
(feat, fix, style, refactor, test, doc и т.д.) - фича
(profile - раздел сайта, страница или новый функционал, одним словом) - какую проблему решали
(Added avatar for user)
👮 Как добавить автоматическую проверку подписи коммита?
Используя файл commit-msg
- Создайте файл
commit-msgв папке.git/hooks/ - Добавьте в файл следующий текст:
#!/usr/bin/env bash
if ! grep -iqE "(JIRA-[0-9]{1,5})(s)(feat|fix|docs|style|refactor|test|chore)((([a-z0-9_-]{1,})){0,})(:s)([a-z]{1,})" "$1"; then
echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
exit 1
fi
Используя пакет pre-commit
- Добавьте в файл
package.jsonблокcommit-msg:
...
"commit-msg": {
"regex": "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})",
"error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
},
...
- Выполните команду
npm install pre-commit
ОБ ЭТОМ ПРИЛОЖЕНИИ
🎨 Как брендировать отчёт?
Вы можете написать свою тему для отчёта. Можно менять:
- Заголовок. Вы можете указать его в URL-параметре
title. Например:?title=You Company - Визуальную тему. Для этого нужно подготовить CSS файл с новыми стилями и указать его адрес в URL-параметре
theme. Например:?theme=//company.com/some.css. Вы можете использовать имена классов в качестве селекторов. Большинство из них не меняется в при выходе новой версий. - Язык. Вы можете указать его в URL-параметре
lang. Например:?lang=es
Например: демо
🛠️ Как пересобрать файл отчёта из исходного кода?
- скачать этот репозиторий
git clone https://github.com/bakhirev/assayo.git - выполнить
npm install - выполнить
npm run build:local - свежая сборка будет в папке
/build
🈯 Как добавить или отредактировать перевод?
Вы можете добавить новый перевод или поправить текущий в разделе ts/translations/.
Инструкция
📐 Архитектура
Общая архитектура микросервисов
- Reports showcase UI отображение списка отчётов. Каждый отчёт имеет название, описание и список репозиториев.
- Crawler service сборка, склейка, обработка логов из репозиториев для отчётов.
- Log visualization UI (вы тут) отображение отчётов. Для работы ему нужен log файл с данными.
📧 Пожелания, предложения, замечания
- 📱 https://t.me/bakhirev (приоритетный способ связи)
- 📧 alexey-bakhirev@yandex.ru
- 🌐 https://bakhirev.github.io/
