11 KiB
English | Español | Français | Português | Deutsch | 中文 | 日本語 | 한국어 | العربية | हिन्दी | Русский
Assayo
Cria um relatório HTML com análise da estatística de commits:
- o ritmo de trabalho e o número de horas extras;
- zonas de responsabilidade, número de funcionalidades e bugs;
- estilo de trabalho dos colegas;
- a taxa de rotatividade de funcionários e a composição da equipe;
- localização dos desenvolvedores;
- calendário de lançamentos e calendário de férias;
- custo das funcionalidades e do projeto como um todo;
- lugares para refatoração, arquivos apagados, etc.
Links: demo, online version, docker, reddit, habr
Vídeo: english, español, русский
Sumário
RELATÓRIO DE ESTATÍSTICAS DE COMMIT
📈 Como criar e visualizar o relatório?
Usando servidor público
- acesse o website
- siga as instruções
Use a biblioteca NodeJS
- execute
npx assayo - abra
./assayo/index.html
Use a biblioteca PHP
- execute
composer require bakhirev/assayo - execute
vendor/bin/assayo - abra
./assayo/index.html
Use a biblioteca Python
- execute
pipx install assayo - execute
assayo - abra
./assayo/index.html
Use a biblioteca Ruby
- execute
gem install assayo - execute
assayo - abra
./assayo/index.html
Use a biblioteca Go
- execute
go get github.com/bakhirev/assayo - execute
go install github.com/bakhirev/assayo - execute
assayo - abra
./assayo/index.html
Use o código fonte
- baixe este repositório
- coloque o arquivo
log.txtno/build - abra
/build/index.html - ou coloque a pasta
/buildno seu repositório (onde olog.txtestá localizado). Você pode mudar o nome. Por exemplo, de/buildpara/report.
Neste caso, é importante que o arquivo log.txt seja gerado pelo comando para visualização offline.
Use ações do github
Adicione script na pasta .github/workflows/ ou use esta ação do marketplace. Um relatório pronto e atualizado será salvo nos artefatos.
Use servidor privado
- baixe a imagem docker;
- execute-o na sua rede local;
- use a interface web para visualizar os relatórios, defina a URL dos dados no parâmetro URL
dump:
http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - URL do contêiner assayo, ele escuta na porta 80;
you_url - URL do seu contêiner com logs git;
Por padrão, a imagem será executada em http://127.0.0.1:80/. Se não funcionar, verifique se a porta 80 está livre.
🎭 Como concatenar autores?
No diretório raiz do seu projeto, você precisa criar um arquivo .mailmap.
Exemplo do conteúdo do arquivo:
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>
Leia mais sobre o formato deste arquivo aqui.
📤 Como exportar dados do git para arquivo txt?
Para visualização online
No diretório raiz do seu projeto execute:
Para visualização offline
O Git criará um arquivo log.txt. Este arquivo contém dados para exibir um relatório. A diferença entre o formato online e offline é a presença de uma envoltória para as strings. O formato offline será carregado como um arquivo js se você apenas abriu /build/index.html
Se você usar PowerShell no Windows
Por padrão, a codificação de saída pode não corresponder a UTF-8 e o arquivo de log resultante será ilegível. Antes de salvar o log, você pode mudar a codificação com o comando.
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Ou abra um arquivo salvo e mude manualmente a codificação para UTF-8.
🗃️ Como visualizar um relatório sobre um grupo de microserviços?
- Gere para cada arquivo de microserviço
log.txt(log-1.txt,log-2.txt,log-3.txt, etc.) Você pode fazer isso manualmente ou usar o módulo Assayo Crawler para coleta automática de logs; - Veja "Como visualizar um relatório online?". Na última etapa, arraste todos os arquivos de uma vez para a janela do navegador.
- Veja "Como visualizar um relatório offline?". Na segunda etapa, arraste todos os arquivos de microserviço (
log-1.txt,log-2.txt,log-3.txt, etc.) para a pasta do relatório (/build).
AS MELHORES PRÁTICAS NO PROJETO
📝 Como assinar commits?
Siga o Conventional Commits 1.0.0. Exemplo:
JIRA-1234 feat(profile): Added avatar for user
- número da tarefa no rastreador de tarefas
(JIRA-1234) - tipo de trabalho
(feat, fix, style, refactor, test, doc, etc.) - funcionalidade
(profile - nova página no site ou nova função, use uma (duas) palavra(s) curta(s) ou uma abreviatura) - qual problema foi resolvido
(Added avatar for user)
👮 Como adicionar verificação para a mensagem de commit?
Use arquivo commit-msg
- Crie arquivo
commit-msgna pasta.git/hooks/ - Adicione este texto no arquivo:
#!/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
Use pacote pre-commit
- Adicione no arquivo
package.jsonpropriedadecommit-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"
},
...
- Execute comando
npm install pre-commit
SOBRE ESTE APLICATIVO
🎨 Como personalizar a interface?
Você pode criar sua própria temática de interface. Opções:
- Título. Você pode definir título de documento padrão no parâmetro de URL
title. Exemplo:?title=You Company - Tema visual. Para isso, você precisa preparar um arquivo CSS com novos estilos e especificar sua URL no parâmetro
theme. Exemplo:?theme=//company.com/some.css. Você pode usar nomes de classe como selectores. A maioria deles não muda nas novas versões. - Língua. Você pode definir língua no parâmetro de URL
lang. Exemplo:?lang=es
Exemplo: demo
🛠️ Como reconstruir o relatório HTML a partir do código fonte?
- baixe este repositório
git clone https://github.com/bakhirev/assayo.git - execute
npm install - execute
npm run build:local - a nova construção HTML estará na pasta
/build
🈯 Como adicionar ou editar uma tradução?
Você pode adicionar uma nova tradução ou corrigir uma existente na pasta ts/translations/.
Instrução
📐 Arquitetura
Arquitetura geral de microserviços
- Reports showcase UI exibe uma lista de relatórios disponíveis. Cada relatório consiste em um título, descrição e uma lista de repositórios.
- Crawler service coleta logs do repositório para o relatório.
- Log visualization UI (você está aqui) exibe relatório. Precisa de um arquivo de log para funcionar.
📧 Feedback, comentários
- 📱 https://t.me/bakhirev (método prioritário de comunicação)
- 📧 alexey-bakhirev@yandex.ru
- 🌐 https://bakhirev.github.io/
