diff --git a/Dockerfile b/Dockerfile index deef2de..f97eead 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,2 @@ FROM nginx COPY build /usr/share/nginx/html -COPY nginx.conf /etc/nginx/nginx.conf diff --git a/README.md b/README.md index a9d1d64..adda036 100644 --- a/README.md +++ b/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 + +### Релизы, примерно, раз в полгода. Что дальше: - больше советов и достижений; - итоги года / месяца, печать отчётов; diff --git a/build/asset-manifest.json b/build/asset-manifest.json index 8a6e9ca..2b9b1fe 100644 --- a/build/asset-manifest.json +++ b/build/asset-manifest.json @@ -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" ] } \ No newline at end of file diff --git a/build/index.html b/build/index.html index 81d47e8..8a9662f 100644 --- a/build/index.html +++ b/build/index.html @@ -1 +1 @@ -Git статистика
\ No newline at end of file +Git статистика
\ No newline at end of file diff --git a/build/static/js/main.d0ec1697.js b/build/static/js/main.ac36006f.js similarity index 96% rename from build/static/js/main.d0ec1697.js rename to build/static/js/main.ac36006f.js index 207782b..8207f6f 100644 --- a/build/static/js/main.d0ec1697.js +++ b/build/static/js/main.ac36006f.js @@ -1,3 +1,3 @@ -/*! For license information please see main.d0ec1697.js.LICENSE.txt */ -(function(){"use strict";var __webpack_modules__={806:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{C:function(){return getShowDropZone},a:function(){return getOnDrop}});var C_work_assayo_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(433),C_work_assayo_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(439);function evalCsvFile(e,t){var n={};e.split("\n").forEach((function(e){var t=e.split("|"),r=(0,C_work_assayo_node_modules_babel_runtime_helpers_esm_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0__.Z)(t,4),a=r[0],i=r[1],o=r[2],s=r[3]?o:"";n[a]={type:i,scope:s}})),t("meta",{byTaskId:n})}function evalJsFile(text,onChange){var temp=window.report;window.report=[];try{eval(text)}catch(e){return void(window.report=temp)}onChange("dump",window.report)}function getOnDrop(e,t){return function(n){var r;n.preventDefault(),n.stopPropagation();var a=(0,C_work_assayo_node_modules_babel_runtime_helpers_esm_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1__.Z)((null===n||void 0===n||null===(r=n.dataTransfer)||void 0===r?void 0:r.items)||[]).map((function(e){return"file"===e.kind?null===e||void 0===e?void 0:e.getAsFile():null})).filter((function(e){return e}));e(!1),a.length&&("application/json"!==a[0].type?Promise.all(a.map((function(e){return e.text()}))).then((function(e){evalJsFile(e.filter((function(e){return e})).map((function(e){return{key:e.substring(13,32),text:e}})).sort((function(e,t){return(e.key||"").localeCompare(t.key||"")})).map((function(e){return e.text})).join("\n"),t)})):Promise.all(a.map((function(e){return e.text()}))).then((function(e){var n=e.map((function(e){var t;return null===(t=JSON.parse(e))||void 0===t?void 0:t.messages})).flat(1);t("telegramm",n)})))}}function getShowDropZone(e){return function(t){t.preventDefault(),t.stopPropagation(),e(!0)}}},463:function(e,t,n){var r=n(791),a=n(296);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n