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
|
||||
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
|
||||
```
|
||||
### Как обьединить авторов?
|
||||
### Как объединить авторов?
|
||||
В корневой директории вашего проекта нужно создать файл `.mailmap`.
|
||||
Пример содержания файла:
|
||||
```
|
||||
|
@ -84,22 +84,48 @@ JIRA-1234 feat(profile): Added avatar for user
|
|||
```
|
||||
- номер задачи в таск трекере `(JIRA-1234)`
|
||||
- тип работы `(feat, fix, style, refactor, test, doc и т.д.)`
|
||||
- фича `(profile - раздел сайта, страница или новый функционал одним словом)`
|
||||
- фича `(profile - раздел сайта, страница или новый функционал, одним словом)`
|
||||
- какую проблему решали `(Added avatar for user)`
|
||||
|
||||
### Как автоматизировать сбор данных (CI/CD)
|
||||
### Как автоматизировать сбор данных
|
||||
|
||||
#### Локально
|
||||
#### Без бекенда
|
||||
- создайте клон нужного вам репозитория;
|
||||
- скопируйте в корень папку `build`;
|
||||
- откройте `build/index.html` в браузере и добавьте в закладки;
|
||||
- добавьте ярлык на `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": {
|
||||
"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",
|
||||
"index.html": "./index.html",
|
||||
"static/media/warning.svg": "./static/media/warning.e39a87773603f3ab157f.svg",
|
||||
"static/media/info.svg": "./static/media/info.954631f6b19e3fe9c495.svg",
|
||||
"static/media/alert.svg": "./static/media/alert.41e2b99c481139c13074.svg",
|
||||
"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": [
|
||||
"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>
|
||||
<div id="root"></div>
|
||||
|
||||
<!-- Yandex.Metrika counter -->
|
||||
<!-- Yandex.Metrika counter
|
||||
<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)};
|
||||
m[i].l=1*new Date();
|
||||
|
@ -80,6 +80,6 @@
|
|||
});
|
||||
</script>
|
||||
<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>
|
||||
</html>
|
||||
|
|
|
@ -4,33 +4,39 @@ import { Link } from 'react-router-dom';
|
|||
import Console from 'ts/components/Console';
|
||||
import style from './styles/index.module.scss';
|
||||
|
||||
function WarningInfo() {
|
||||
return (
|
||||
<h4 className={style.welcome_warning}>
|
||||
<p>
|
||||
{'Сервис '}
|
||||
<span className={style.welcome_warning_bold}>НЕ ХРАНИТ</span>
|
||||
{' и '}
|
||||
<span className={style.welcome_warning_bold}>НЕ ПЕРЕДАЁТ</span>
|
||||
{' ваши данные. Все расчёты выполняются локально в вашем браузере прямо на вашей машине.'}
|
||||
</p>
|
||||
<p>
|
||||
{'Сервис '}
|
||||
<span className={style.welcome_warning_bold}>НЕ СОБИРАЕТ СТАТИСТИКУ</span>
|
||||
{' по проектам. Вы можете отключить интернет, проверить трафик и даже собрать локальный билд из '}
|
||||
<a
|
||||
href='https://github.com/bakhirev/assayo'
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className={style.welcome_warning_link}
|
||||
>
|
||||
исходников
|
||||
</a>
|
||||
{'.'}
|
||||
</p>
|
||||
</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 (
|
||||
<>
|
||||
<h4 className={style.welcome_warning}>
|
||||
<p>
|
||||
{'Сервис '}
|
||||
<span className={style.welcome_warning_bold}>НЕ ХРАНИТ</span>
|
||||
{' и '}
|
||||
<span className={style.welcome_warning_bold}>НЕ ПЕРЕДАЁТ</span>
|
||||
{' ваши данные. Все расчёты выполняются локально в вашем браузере прямо на вашей машине.'}
|
||||
</p>
|
||||
<p>
|
||||
{'Сервис '}
|
||||
<span className={style.welcome_warning_bold}>НЕ СОБИРАЕТ СТАТИСТИКУ</span>
|
||||
{' по проектам. Вы можете отключить интернет, проверить трафик и даже собрать локальный билд из '}
|
||||
<a
|
||||
href='https://github.com/bakhirev/assayo'
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className={style.welcome_warning_link}
|
||||
>
|
||||
исходников
|
||||
</a>
|
||||
{'.'}
|
||||
</p>
|
||||
</h4>
|
||||
{false && (<WarningInfo />)}
|
||||
<section className={style.welcome}>
|
||||
<div className={style.welcome_row}>
|
||||
<h2 className={style.welcome_first_title}>
|
||||
|
|
Loading…
Reference in a new issue