12 KiB
English | Español | Français | Português | Deutsch | 中文 | 日本語 | 한국어 | العربية | हिन्दी | Русский
Assayo
커밋 통계 보고서. 이 보고서는 다음에 대한 분석을 포함합니다:
- 작업 속도와 초과 근무 시간 수;
- 책임 영역, 기능 및 버그 수;
- 동료들의 업무 스타일;
- 직원 이직률과 팀 구성;
- 개발자 위치;
- 릴리스 일정 및 휴가 캘린더;
- 기능 및 프로젝트 전체 비용;
- 리팩터링이 필요한 위치, 삭제된 파일 등.
링크: 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/ 폴더에 script 추가 또는 마켓플레이스의 이 action 사용. 최신 보고서는 아티팩트에 저장됩니다.
개인 서버 사용
- docker 이미지 다운로드;
- 로컬 네트워크에서 실행;
- 웹 인터페이스를 사용해 보고서를 보고 URL 매개변수
dump에 데이터 URL 설정:
http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - assayo 컨테이너의 URL, 포트 80에서 수신;
you_url - git 로그가 있는 컨테이너의 URL;
기본적으로 이미지는 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 파일을 생성합니다. 이 파일에는 보고서를 표시하기 위한 데이터가 포함됩니다. 온라인 형식과 오프라인 형식의 차이점은 문자열 래퍼의 존재 여부입니다. 오프라인 형식은 /build/index.html를 열면 js 파일처럼 로드됩니다.
Windows에서 PowerShell을 사용하는 경우
기본 출력 인코딩이 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 사용
.git/hooks/폴더에commit-msg파일 생성- 파일에 다음 텍스트 추가:
#!/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 파일을 준비하고
theme매개변수에 URL을 지정해야 합니다. 예:?theme=//company.com/some.css. 대부분의 클래스 이름은 새 버전에서도 변경되지 않습니다. - 언어. URL 매개변수
lang에서 언어를 설정할 수 있습니다. 예:?lang=es
예: 데모
🛠️ 소스 코드에서 HTML 보고서를 다시 빌드하는 방법은?
- 이 저장소
git clone https://github.com/bakhirev/assayo.git다운로드 npm install실행npm run build:local실행- 새 HTML 빌드는
/build폴더에 생성됩니다.
🈯 번역을 추가하거나 편집하는 방법은?
ts/translations/ 폴더에서 새 번역을 추가하거나 기존 번역을 수정할 수 있습니다.
안내
📐 아키텍처
마이크로서비스의 일반 아키텍처
- Reports showcase UI는 사용 가능한 보고서 목록을 표시합니다. 각 보고서는 제목, 설명 및 저장소 목록으로 구성됩니다.
- Crawler service는 보고서를 위한 저장소 로그를 수집합니다.
- Log visualization UI (현재 위치) 는 보고서를 표시합니다. 작동하려면 로그 파일이 필요합니다.
📧 피드백, 의견
- 📱 https://t.me/bakhirev (우선적인 커뮤니케이션 방법)
- 📧 alexey-bakhirev@yandex.ru
- 🌐 https://bakhirev.github.io/
