ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ ΡΠ°ΠΉΠ»ΠΎΠ² git`Π° (demo, install, docker, reddit, habr).
Π¦Π΅Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ±ΠΎΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ log ΡΠ°ΠΉΠ»ΠΎΠ² git`Π°.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΡΠ΅ΡΠ°Π΅Ρ:
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΠΆΠΈΡ Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ;
- ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° ΠΏΠΎ Π³ΡΡΠΏΠΏΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ²;
- ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ?
- ΠΠ±ΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ
- API
- ΠΠΎΠ½ΡΠ°ΠΊΡΡ
- Reports showcase UI ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΎΡΡΡΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π².
- Crawler service (Π²Ρ ΡΡΡ) ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π΄Π»Ρ ΠΎΡΡΡΡΠ°.
- Log visualization UI ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΡΡΡΡΡ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Π΅ΠΌΡ Π½ΡΠΆΠ΅Π½ Π»ΠΎΠ³ ΡΠ°ΠΉΠ».
- ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π·Π°ΠΏΡΡΠΊΠ° (ΡΠ°ΠΉΠΌΠ΅Ρ, Π·Π°ΠΏΡΠΎΡ, ΡΠΎΠ±ΡΡΠΈΠ΅);
- ΠΠ±Ρ ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π²;
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ;
- ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² Π² ΠΎΠ±ΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ;
- ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠ½ΠΊΡΡ 1.
Π Ρ ΠΎΠ΄Π΅ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π²Π΅Ρ. ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ:
- Π₯ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ ΠΈ ΡΠ½ΠΈΠΆΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
- Π£Π΄Π°Π»ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π»ΠΎΠ³Π°. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΎΠ±ΡΡΠΌ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π²Π΅ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ ΠΎΠ΄Π΅. ΠΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΎΠ±ΡΡΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅. Π’.ΠΊ. Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Docker ΠΎΠ±ΡΠ°Π· ΠΏΡΠΈΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π² ΠΊ Π½Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ Π½Π° Π΄ΠΈΡΠΊΠ΅. Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ Π΅Ρ ΠΏΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅
/c/YouFolder
(Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ Windows ΠΏΡΡΠΈ ΡΠΈΠΏΠ°C:/YouFolder
). ΠΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΌ. - ΠΡΡΠ°Π²ΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΡΠΉ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ°Π³Π΅ ΠΏΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
docker run --name assayo-crawler -p 80:80 --mount type=bind,source=/c/YouFolder,destination=/usr/src/assayo_crawler/input --mount type=bind,source=/c/YouFolder,destination=/usr/src/assayo_crawler/output -d assayo-crawler
; - Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ Docker ΠΎΠ±ΡΠ°Π· Ρ Docker Hub.
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π· ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π½Π° Π²ΡΠΎΡΠΎΠΌ ΡΠ°Π³Π΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ source. ΠΡ ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΠΌ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ (Π΄Π»Ρ Π»ΠΎΠ³ΠΎΠ² ΠΈ Π΄Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π²), Π½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ ΠΎΠ½ΠΈ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ C:/YouFolder. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΠΊΠ°Π·Π°Π² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π»ΠΎΠ³ΠΎΠ² ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π².
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
localhost
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΠ»ΡΡ.
- ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΡΡΡΠΌΠΈ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΡΠΎΡ ΠΊ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ JSON ΡΠ°ΠΉΠ»Π° ΠΈ Ρ.ΠΏ.). ΠΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠΊΠ°ΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ JSON ΡΠ°ΠΉΠ»ΠΎΠ² (ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
http://localhost
, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΡ ΠΈ ΠΊΠΈΠ½ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΎΠΊΠ½ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
- Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ NodeJS
- ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ
npm install
- ΠΠΎΠΏΡΠ°Π²ΡΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅
src/configs/app.json
- ΠΠΎΠΏΡΠ°Π²ΡΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ) Π² ΡΠ°ΠΉΠ»Π΅
/src/configs/reports.json
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
cd node && node index.js
Π§ΡΠΎΠ±Ρ Π½Π΅ Π²ΡΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠΊΠ°ΠΌΠΈ URL Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΡΡΡΠ°Π½ΠΈΡΡ Bitbucket ΠΈΠ»ΠΈ Gitlab
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ;
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Ρ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ;
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ Π²ΡΡΠ°Π²ΡΡΠ΅ Π² ΠΏΠΎΠ»Π΅ URL ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ:
javascript:(()=>{function getConfig(code, repositories) {return code && repositories.length ? [{status: 1,log: {name: code},repositories: {folder: code,list: repositories,}}] : [];}function getRepositories(selector, getUrl) {const elements=document.body.querySelectorAll(selector);return Array.from(elements).map((node)=>({url: getUrl(node),}));}function getConfigFromBitbucketPage() {const domain=location.origin;const code=location.pathname.toLowerCase().split('/').pop()||'';const repositories=getRepositories('.aui-iconfont-repository-small + .repository-name span',node=>[domain, '/scm/', code, '/', node.innerText, '.git'].join(''));return getConfig(code, repositories);}function getConfigFromGitlabPage() {const code=(location.pathname.split('/')?.[1]||'')?.replace(/-/gim, '_');const repositories=getRepositories('li[itemprop=owns] > div > a', node=>(node.href + '.git'));return getConfig(code, repositories);}function downloadForChrome(blob, suggestedName) {window.showSaveFilePicker({ suggestedName }).then(async (file)=>{const writable=await file.createWritable();await writable.write(blob);await writable.close();});}function downloadForAll(blob, filename) {const a=document.createElement('a');const url=URL.createObjectURL(blob);a.href=url;a.download=filename;document.body.appendChild(a);a.click();setTimeout(function() {document.body.removeChild(a);window.URL.revokeObjectURL(url);}, 0);}function download(text, filename) {const blob=new Blob([text], { type: 'application/json' });if (window.navigator.msSaveOrOpenBlob) {window.navigator.msSaveOrOpenBlob(blob, filename);} else if (window.showSaveFilePicker) {downloadForChrome(blob, filename);} else {downloadForAll(blob, filename)}}function getFileName(code) {const defaultFileName=[code||'tasks', '.json'].join('');return window.showSaveFilePicker? defaultFileName: (prompt('File name for save?', defaultFileName)||defaultFileName);}const config=[...getConfigFromBitbucketPage(),...getConfigFromGitlabPage(),];const fileName=getFileName(config?.[0]?.code);download(JSON.stringify(config, 2, 2), fileName);})();
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ;
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Bitbucket ΠΈΠ»ΠΈ Gitlab Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π²;
- Π Π°ΡΠΊΡΠΎΠΉΡΠ΅ Π³ΡΡΠΏΠΏΡ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²Π½ΡΡΡΠΈ (ΠΏΡΠ½ΠΊΡ Π΄Π»Ρ Gitlab);
- ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° Π·Π°ΠΊΠ»Π°Π΄ΠΊΡ ΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠΌ;
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ»;
Π‘ΠΏΡΠΈΠΏΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ» ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ "ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ".
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΠ² Π² ΠΎΠΊΠ½ΠΎ Π±ΡΠ°Π·Π΅ΡΠ° (Π΅ΡΠ»ΠΈ ΡΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡ) ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² node/configs/reports.json
(Π΅ΡΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ).
ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ΄Π΅Π» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ (bitbucket) ΠΈΠ»ΠΈ Π³ΡΡΠΏΠΏΡ (gitlab). ΠΠΎΡΡΠΎΠΌΡ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π»ΠΎΠ³ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΡΡΡΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠ³ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΎΡΡΡΡΠΎΠ², Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ frontend ΠΎΡ backend ΠΈΠ»ΠΈ QA Π³ΡΡΠΏΠΏΡ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΡΡΠ°Π·Ρ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΠ±ΠΎΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
- ΠΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°;
- ΠΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ;
- ΠΠ· ΡΠ°ΠΉΠ»Π°.
Π€Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΠ΅ src/configs/app.json
(ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ public/assets/example/app.json
)
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ | Π’ΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|---|
canUpdateConfigFromUI |
boolean |
true | ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡ UI? |
loadConfigFromUrl |
JSON |
ΠΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°? | |
loadConfigFromUrl.url |
string |
URL-Π°Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°. | |
loadConfigFromUrl.method |
string |
ΠΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ°. | |
loadConfigFromUrl.headers |
JSON |
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π² Π²ΠΈΠ΄Π΅ json ΠΎΠ±ΡΠ΅ΠΊΡΠ°. | |
loadConfigFromUrl.body |
any | Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. | |
canUpdateTasksFromUI |
boolean |
true | ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ ΠΎΡ UI? |
loadTasksFromUrl |
JSON |
ΠΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°? | |
loadTasksFromUrl.url |
string |
URL-Π°Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°. | |
loadTasksFromUrl.method |
string |
ΠΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ°. | |
loadTasksFromUrl.headers |
JSON |
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π² Π²ΠΈΠ΄Π΅ json ΠΎΠ±ΡΠ΅ΠΊΡΠ°. | |
loadTasksFromUrl.body |
any | Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. | |
output.folder |
string |
"logs" |
ΠΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π»ΠΎΠ³ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. |
output.needCreateAfterInit |
boolean |
true |
ΠΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
input.folder |
string |
"repositories" |
ΠΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠ΅ΠΏΠΈΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ Π·Π°Π΄Π°Ρ. |
input.needCreateAfterInit |
boolean |
true |
ΠΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
input.needRemoveAfterUse |
boolean |
false |
ΠΡΠΆΠ½ΠΎ ΠΎΡΠΈΡΠ°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠ° Π»ΠΎΠ³ΠΎΠ². |
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ | Π’ΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|---|
PORT |
number |
3007 |
ΠΠΎΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
LOAD_CONFIG_UI |
boolean |
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡ UI. | |
LOAD_CONFIG_URL |
string |
true |
URL-Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
LOAD_CONFIG_METHOD |
string |
ΠΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ°. | |
LOAD_CONFIG_HEADERS |
JSON like string |
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π² Π²ΠΈΠ΄Π΅ json ΠΎΠ±ΡΠ΅ΠΊΡΠ°. | |
LOAD_CONFIG_BODY |
any | Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. | |
LOAD_REPORTS_UI |
boolean |
true |
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ ΠΎΡ UI. |
LOAD_REPORTS_URL |
string |
URL-Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ. | |
LOAD_REPORTS_METHOD |
string |
ΠΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ°. | |
LOAD_REPORTS_HEADERS |
JSON like string |
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π² Π²ΠΈΠ΄Π΅ json ΠΎΠ±ΡΠ΅ΠΊΡΠ°. | |
LOAD_REPORTS_BODY |
any | Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. | |
OUTPUT_FOLDER |
string |
"logs" |
ΠΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π»ΠΎΠ³ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. |
OUTPUT_NEED_CREATE_AFTER_INIT |
boolean |
true |
ΠΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
INPUT_FOLDER |
string |
"repositories" |
ΠΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠ΅ΠΏΠΈΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ Π·Π°Π΄Π°Ρ. |
INPUT_NEED_CREATE_AFTER_INIT |
boolean |
true |
ΠΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. |
INPUT_NEED_CLEAR_AFTER_USE |
boolean |
false |
ΠΡΠΆΠ½ΠΎ ΠΎΡΠΈΡΠ°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠ° Π»ΠΎΠ³ΠΎΠ². |
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΡΠ°Π·Ρ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΠ±ΠΎΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
- ΠΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°;
- ΠΠ· ΡΠ°ΠΉΠ»Π°.
Π€Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΠ΅ src/configs/reports.json
(ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ public/assets/example/reports.json
)
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ | Π’ΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ | ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|---|
code |
string |
Π΄Π° | Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. |
folder |
string |
Π½Π΅Ρ | ΠΠΎΡΠ΅ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΠΏΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ (output.folder) |
repositories[] |
object[] |
Π΄Π° | Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. |
repositories[].url |
string |
Π΄Π° | URL-Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. |
repositories[].folder |
string |
Π½Π΅Ρ | ΠΠΎΡΠ΅ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. |
repositories[].needRemoveAfterUse |
boolean |
Π½Π΅Ρ | ΠΡΠΆΠ½ΠΎ ΠΎΡΠΈΡΠ°ΡΡ ΡΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠ° Π»ΠΎΠ³ΠΎΠ². |
ΠΠ΅ΡΠΎΠ΄ | URL | Π’Π΅Π»ΠΎ ΠΎΡΠ²Π΅ΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|---|
GET |
/api/v1.0/start |
{ message: string } |
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ |
GET |
/api/v1.0/stop |
{ message: string } |
ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ |
GET |
/api/v1.0/restart |
{ message: string } |
ΠΠ΅ΡΠ΅-Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ |
POST |
/api/v1.0/update/configs |
{ message: string } |
ΠΠ΅ΡΠ΅-Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ |
POST |
/api/v1.0/update/reports |
{ message: string } |
ΠΠ΅ΡΠ΅-Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ |
GET |
/api/v1.0/get/status |
{ message: string } |
ΠΠ΅ΡΠ΅-Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π΄Π°Ρ |
GET |
/check |
{ message: string } |
ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (health check) |
- run
npm run build
- run
docker build -t assayo-crawler .
- visually check the image
docker run --name assayo-crawler -p 80:80 --mount type=bind,source=/c/work/assayo-crawler/node/input,destination=/usr/src/assayo_crawler/input --mount type=bind,source=/c/work/assayo-crawler/node/output,destination=/usr/src/assayo_crawler/output -d assayo-crawler
; - add tag
docker tag assayo-crawler bakhirev/assayo-crawler:latest
; - push image to Docker Hub
docker push bakhirev/assayo-crawler:latest
;
- telegramm @bakhirev (ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ²ΡΠ·ΠΈ)
- [email protected]
- ΡΠ°ΠΉΡ https://bakhirev.github.io/