mirror of
https://github.com/bakhirev/assayo.git
synced 2024-11-16 08:11:40 +00:00
JIRA-1111 feat(ci-cd): some text
This commit is contained in:
parent
a8a77203a4
commit
ff8894d11c
|
@ -1,3 +1,2 @@
|
||||||
FROM nginx
|
FROM nginx
|
||||||
COPY build /usr/share/nginx/html
|
COPY build /usr/share/nginx/html
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
|
||||||
|
|
46
README.md
46
README.md
|
@ -11,16 +11,16 @@
|
||||||
|
|
||||||
##### Руководитель может оценить сотрудников
|
##### Руководитель может оценить сотрудников
|
||||||
- выявить бездельников;
|
- выявить бездельников;
|
||||||
- прикинуть обьём кода;
|
- прикинуть объём кода;
|
||||||
- узнать скорость работы;
|
- узнать скорость работы;
|
||||||
- заметить аномалии поведения;
|
- заметить аномалии поведения;
|
||||||
- посмотреть динамику работы по неделям;
|
- посмотреть динамику работы по неделям;
|
||||||
|
|
||||||
##### Ивестор может оценить продукт
|
##### Инвестор может оценить продукт
|
||||||
- стоимость продукта;
|
- стоимость продукта;
|
||||||
- стоимость фичей;
|
- стоимость фичей;
|
||||||
- время на разработку;
|
- время на разработку;
|
||||||
- прогноз времи доработок;
|
- прогноз времени доработок;
|
||||||
- прогноз стоимости;
|
- прогноз стоимости;
|
||||||
|
|
||||||
### Как быстро посмотреть количество коммитов?
|
### Как быстро посмотреть количество коммитов?
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
```
|
```
|
||||||
git shortlog -s -n -e
|
git shortlog -s -n -e
|
||||||
```
|
```
|
||||||
### Как обьединить авторов?
|
### Как объединить авторов?
|
||||||
В корневой директории вашего проекта нужно создать файл `.mailmap`.
|
В корневой директории вашего проекта нужно создать файл `.mailmap`.
|
||||||
Пример содержания файла:
|
Пример содержания файла:
|
||||||
```
|
```
|
||||||
|
@ -84,22 +84,48 @@ JIRA-1234 feat(profile): Added avatar for user
|
||||||
```
|
```
|
||||||
- номер задачи в таск трекере `(JIRA-1234)`
|
- номер задачи в таск трекере `(JIRA-1234)`
|
||||||
- тип работы `(feat, fix, style, refactor, test, doc и т.д.)`
|
- тип работы `(feat, fix, style, refactor, test, doc и т.д.)`
|
||||||
- фича `(profile - раздел сайта, страница или новый функционал одним словом)`
|
- фича `(profile - раздел сайта, страница или новый функционал, одним словом)`
|
||||||
- какую проблему решали `(Added avatar for user)`
|
- какую проблему решали `(Added avatar for user)`
|
||||||
|
|
||||||
### Как автоматизировать сбор данных (CI/CD)
|
### Как автоматизировать сбор данных
|
||||||
|
|
||||||
#### Локально
|
#### Без бекенда
|
||||||
- создайте клон нужного вам репозитория;
|
- создайте клон нужного вам репозитория;
|
||||||
- скопируйте в корень папку `build`;
|
- скопируйте в корень папку `build`;
|
||||||
- откройте `build/index.html` в браузере и добавьте в закладки;
|
- откройте `build/index.html` в браузере и добавьте в закладки;
|
||||||
- добавьте ярлык на `build/assets/ci-cd.sh` в папку автозагрузки (Windows);
|
- добавьте ярлык на `build/assets/ci-cd.sh` в папку автозагрузки (Windows);
|
||||||
|
|
||||||
Каждый раз, при перезагрузке компьютера, скрипт будет обновлять статстику по всем данным, которые автоматически влились в основную ветку.
|
Каждый раз, при перезагрузке компьютера, скрипт будет обновлять статистику по всем данным, которые автоматически влились в основную ветку.
|
||||||
|
|
||||||
### RoadMap
|
### DevOps (CI/CD)
|
||||||
|
|
||||||
Релизы, примерно, раз в полгода. Что дальше:
|
#### Публичный сервер
|
||||||
|
|
||||||
|
Вы можете выкладывать файл с данными для построения отчёта на публичный URL. А для его визуализации использовать веб-интерфейс сайта [assayo](https://assayo.jp/). Просто укажите адресс, где лежат данные, в URL-параметре ```dump```:
|
||||||
|
```
|
||||||
|
https://assayo.jp/demo/?dump=//you_site.com/some/log.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Приватный сервер
|
||||||
|
- скачайте [docker образ](https://hub.docker.com/r/bakhirev/assayo);
|
||||||
|
- поднимите его в локальной сети;
|
||||||
|
- для просмотра отчётов используйте веб-интерфейс указывая ему адресс, где лежат данные, в URL-параметре ```dump```:
|
||||||
|
```
|
||||||
|
url_assayo/?dump=//you_url/some/log.txt
|
||||||
|
|
||||||
|
url_assayo - URL адресс контейнера assayo;
|
||||||
|
you_url - URL адресс вашего контейнера с логами git;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Обновление Docker-образа
|
||||||
|
|
||||||
|
- удилить метрику, аллерты, старые билды;
|
||||||
|
- собрать билд ```npm run build```
|
||||||
|
- собрать образ ```docker build -t assayo .```
|
||||||
|
- визуально проверить образ ```docker run --name assayo -p 80:80 -d assayo```;
|
||||||
|
- запушить образ в Docker Hub
|
||||||
|
|
||||||
|
### Релизы, примерно, раз в полгода. Что дальше:
|
||||||
|
|
||||||
- больше советов и достижений;
|
- больше советов и достижений;
|
||||||
- итоги года / месяца, печать отчётов;
|
- итоги года / месяца, печать отчётов;
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
{
|
{
|
||||||
"files": {
|
"files": {
|
||||||
"main.css": "./static/css/main.48701252.css",
|
"main.css": "./static/css/main.48701252.css",
|
||||||
"main.js": "./static/js/main.d0ec1697.js",
|
"main.js": "./static/js/main.ac36006f.js",
|
||||||
"static/media/car.png": "./static/media/car.b8dd8738e37fe866285f.png",
|
"static/media/car.png": "./static/media/car.b8dd8738e37fe866285f.png",
|
||||||
"index.html": "./index.html",
|
"index.html": "./index.html",
|
||||||
"static/media/warning.svg": "./static/media/warning.e39a87773603f3ab157f.svg",
|
"static/media/warning.svg": "./static/media/warning.e39a87773603f3ab157f.svg",
|
||||||
"static/media/info.svg": "./static/media/info.954631f6b19e3fe9c495.svg",
|
"static/media/info.svg": "./static/media/info.954631f6b19e3fe9c495.svg",
|
||||||
"static/media/alert.svg": "./static/media/alert.41e2b99c481139c13074.svg",
|
"static/media/alert.svg": "./static/media/alert.41e2b99c481139c13074.svg",
|
||||||
"main.48701252.css.map": "./static/css/main.48701252.css.map",
|
"main.48701252.css.map": "./static/css/main.48701252.css.map",
|
||||||
"main.d0ec1697.js.map": "./static/js/main.d0ec1697.js.map"
|
"main.ac36006f.js.map": "./static/js/main.ac36006f.js.map"
|
||||||
},
|
},
|
||||||
"entrypoints": [
|
"entrypoints": [
|
||||||
"static/css/main.48701252.css",
|
"static/css/main.48701252.css",
|
||||||
"static/js/main.d0ec1697.js"
|
"static/js/main.ac36006f.js"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -1 +1 @@
|
||||||
<!doctype html><html lang="ru"><head><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,user-scalable=no,maximum-scale=1"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="cleartype" content="on"><meta name="HandheldFriendly" content="True"><meta name="format-detection" content="telephone=no"><meta name="format-detection" content="address=no"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><script type="text/javascript">var report=[]</script><script src="/log.txt"></script><script src="./log.txt"></script><script src="../log.txt"></script><script src="./log-0.txt"></script><script src="./log-1.txt"></script><script src="./log-2.txt"></script><script src="./log-3.txt"></script><script src="./log-4.txt"></script><script src="./log-5.txt"></script><script src="./log-6.txt"></script><script src="./report/log-0.txt"></script><script src="./report/log-1.txt"></script><script src="./report/log-2.txt"></script><script src="./report/log-3.txt"></script><script src="./report/log-4.txt"></script><script src="./report/log-5.txt"></script><script src="./report/log-6.txt"></script><link rel="icon" href="./favicon.svg"/><link rel="apple-touch-icon" href="./logo192.png"/><link rel="manifest" href="./manifest.json"/><title>Git статистика</title><meta name="description" content="Простой и быстрый отчёт по истории коммитов в git."><meta name="keywords" content="git, статистика, аудит, история, log, мониторинг, контроль сотрудников"><meta name="author" content="Bakhirev Aleksei"><meta name="copyright" content="(c) Bakhirev Aleksei"><meta http-equiv="Reply-to" content="alexey-bakhirev@yandex.ru"><meta name="application-name" content="GIT Статистика"><meta name="msapplication-tooltip" content="Простой и быстрый отчёт по истории коммитов в git."><meta property="og:title" content="GIT Статистика"><meta property="og:description" content="Простой и быстрый отчёт по истории коммитов в git."><meta property="og:image" content="http://assayo.jp/assets/seo/custom_icon_256.png"><meta property="og:site_name" content="Assayo"><meta property="og:url" content="http://assayo.jp/"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="GIT Статистика"><meta name="twitter:description" content="Простой и быстрый отчёт по истории коммитов в git."><meta name="twitter:creator" content="Bakhirev Aleksei"><meta name="twitter:image:src" content="http://assayo.jp/assets/seo/custom_icon_256.png"><meta name="twitter:domain" content="assayo.jp"><meta name="twitter:site" content="assayo.jp"><meta itemprop="name" content="GIT Статистика"><meta itemprop="description" content="Простой и быстрый отчёт по истории коммитов в git."><meta itemprop="image" content="http://assayo.jp/assets/seo/custom_icon_256.png"><script defer="defer" src="./static/js/main.d0ec1697.js"></script><link href="./static/css/main.48701252.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script type="text/javascript">!function(e,t,c,n,r,a,s){e[r]=e[r]||function(){(e[r].a=e[r].a||[]).push(arguments)},e[r].l=1*new Date;for(var i=0;i<document.scripts.length;i++)if(document.scripts[i].src===n)return;a=t.createElement(c),s=t.getElementsByTagName(c)[0],a.async=1,a.src=n,s.parentNode.insertBefore(a,s)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym"),ym(94903985,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img src="https://mc.yandex.ru/watch/94903985" style="position:absolute;left:-9999px" alt=""/></div></noscript></body></html>
|
<!doctype html><html lang="ru"><head><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,user-scalable=no,maximum-scale=1"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="cleartype" content="on"><meta name="HandheldFriendly" content="True"><meta name="format-detection" content="telephone=no"><meta name="format-detection" content="address=no"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><script type="text/javascript">var report=[]</script><script src="/log.txt"></script><script src="./log.txt"></script><script src="../log.txt"></script><script src="./log-0.txt"></script><script src="./log-1.txt"></script><script src="./log-2.txt"></script><script src="./log-3.txt"></script><script src="./log-4.txt"></script><script src="./log-5.txt"></script><script src="./log-6.txt"></script><script src="./report/log-0.txt"></script><script src="./report/log-1.txt"></script><script src="./report/log-2.txt"></script><script src="./report/log-3.txt"></script><script src="./report/log-4.txt"></script><script src="./report/log-5.txt"></script><script src="./report/log-6.txt"></script><link rel="icon" href="./favicon.svg"/><link rel="apple-touch-icon" href="./logo192.png"/><link rel="manifest" href="./manifest.json"/><title>Git статистика</title><meta name="description" content="Простой и быстрый отчёт по истории коммитов в git."><meta name="keywords" content="git, статистика, аудит, история, log, мониторинг, контроль сотрудников"><meta name="author" content="Bakhirev Aleksei"><meta name="copyright" content="(c) Bakhirev Aleksei"><meta http-equiv="Reply-to" content="alexey-bakhirev@yandex.ru"><meta name="application-name" content="GIT Статистика"><meta name="msapplication-tooltip" content="Простой и быстрый отчёт по истории коммитов в git."><meta property="og:title" content="GIT Статистика"><meta property="og:description" content="Простой и быстрый отчёт по истории коммитов в git."><meta property="og:image" content="http://assayo.jp/assets/seo/custom_icon_256.png"><meta property="og:site_name" content="Assayo"><meta property="og:url" content="http://assayo.jp/"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="GIT Статистика"><meta name="twitter:description" content="Простой и быстрый отчёт по истории коммитов в git."><meta name="twitter:creator" content="Bakhirev Aleksei"><meta name="twitter:image:src" content="http://assayo.jp/assets/seo/custom_icon_256.png"><meta name="twitter:domain" content="assayo.jp"><meta name="twitter:site" content="assayo.jp"><meta itemprop="name" content="GIT Статистика"><meta itemprop="description" content="Простой и быстрый отчёт по истории коммитов в git."><meta itemprop="image" content="http://assayo.jp/assets/seo/custom_icon_256.png"><script defer="defer" src="./static/js/main.ac36006f.js"></script><link href="./static/css/main.48701252.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
File diff suppressed because one or more lines are too long
1
build/static/js/main.ac36006f.js.map
Normal file
1
build/static/js/main.ac36006f.js.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
46
nginx.conf
46
nginx.conf
|
@ -1,46 +0,0 @@
|
||||||
worker_processes 1;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
include mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
client_max_body_size 100M;
|
|
||||||
|
|
||||||
sendfile on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
port_in_redirect off;
|
|
||||||
|
|
||||||
gzip on;
|
|
||||||
gzip_min_length 10240;
|
|
||||||
gzip_proxied expired no-cache no-store private auth;
|
|
||||||
gzip_types font/woff2 image/svg+xml text/plain text/css text/xml text/javascript application/javascript application/xml;
|
|
||||||
|
|
||||||
# kill cache
|
|
||||||
add_header Last-Modified $date_gmt;
|
|
||||||
add_header Cache-Control 'no-store, no-cache';
|
|
||||||
if_modified_since off;
|
|
||||||
expires off;
|
|
||||||
etag off;
|
|
||||||
|
|
||||||
root html;
|
|
||||||
index index.html index.htm;
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 8000;
|
|
||||||
server_name localhost;
|
|
||||||
client_max_body_size 100M;
|
|
||||||
|
|
||||||
proxy_set_header HOST $host;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
|
|
||||||
# Frontend
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ /index.html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -64,7 +64,7 @@
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|
||||||
<!-- Yandex.Metrika counter -->
|
<!-- Yandex.Metrika counter
|
||||||
<script type="text/javascript" >
|
<script type="text/javascript" >
|
||||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
||||||
m[i].l=1*new Date();
|
m[i].l=1*new Date();
|
||||||
|
@ -80,6 +80,6 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<noscript><div><img src="https://mc.yandex.ru/watch/94903985" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
<noscript><div><img src="https://mc.yandex.ru/watch/94903985" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
||||||
<!-- /Yandex.Metrika counter -->
|
/Yandex.Metrika counter -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -4,10 +4,8 @@ import { Link } from 'react-router-dom';
|
||||||
import Console from 'ts/components/Console';
|
import Console from 'ts/components/Console';
|
||||||
import style from './styles/index.module.scss';
|
import style from './styles/index.module.scss';
|
||||||
|
|
||||||
function Welcome() {
|
function WarningInfo() {
|
||||||
const command = 'git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e \'s/\\\\/\\\\\\\\/g\' | sed -e \'s/`/"/g\' | sed -e \'s/^/report.push(\\`/g\' | sed \'s/$/\\`\\);/g\' | sed \'s/\\$/_/g\' > log.txt\n';
|
|
||||||
return (
|
return (
|
||||||
<>
|
|
||||||
<h4 className={style.welcome_warning}>
|
<h4 className={style.welcome_warning}>
|
||||||
<p>
|
<p>
|
||||||
{'Сервис '}
|
{'Сервис '}
|
||||||
|
@ -31,6 +29,14 @@ function Welcome() {
|
||||||
{'.'}
|
{'.'}
|
||||||
</p>
|
</p>
|
||||||
</h4>
|
</h4>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Welcome() {
|
||||||
|
const command = 'git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e \'s/\\\\/\\\\\\\\/g\' | sed -e \'s/`/"/g\' | sed -e \'s/^/report.push(\\`/g\' | sed \'s/$/\\`\\);/g\' | sed \'s/\\$/_/g\' > log.txt\n';
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{false && (<WarningInfo />)}
|
||||||
<section className={style.welcome}>
|
<section className={style.welcome}>
|
||||||
<div className={style.welcome_row}>
|
<div className={style.welcome_row}>
|
||||||
<h2 className={style.welcome_first_title}>
|
<h2 className={style.welcome_first_title}>
|
||||||
|
|
Loading…
Reference in a new issue