diff --git a/gitlab-notification/ru/v.1.0.0/404.html b/gitlab-notification/ru/v.1.0.0/404.html new file mode 100644 index 0000000..b4ec06b --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/404.html @@ -0,0 +1,897 @@ + + + + + + + + + + + + + + + + + + + + + + GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ +

404 - Not found

+ +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/architecture/concept/index.html b/gitlab-notification/ru/v.1.0.0/architecture/concept/index.html new file mode 100644 index 0000000..9cb871c --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/architecture/concept/index.html @@ -0,0 +1,1107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Общее - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Перейти к содержанию + + +
+
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Общая архитектура⚓︎

+
+

Warning

+

Данный раздел находится в процессе написания

+
+

Поддерживается два режима работы: периодические запуски на ПК и запуск на сервере в режиме 24/7.

+

Схема БД⚓︎

+

Приложение имеет БД, которая используется для сохранения состояния отслеживаемых сущностей GitLab.

+
+

schema-database.png +

+
Схема приложения версия 1.0.0
+
+

Важно подчеркнуть, что приложение не сохраняет все бездумно в БД. Во время первого запуска вам будет задан ряд вопросов, ответы на которые повлияют на наполнение БД.

+

Также приложение старается не хранить лишние данные. Например, если MR был вмержен или закрыт, то нет смысла хранить информацию об этом MR, поэтому при следующем сканировании запись об этом MR, а также обо всех связанных сущностях этого MR (пайплайны, треды...) будут удалены.

+

Сканирование GitLab⚓︎

+

Раз в 1 минуту происходит обращение к GitLab API с вашим персональным токеном. Получаемые от GitLab данные сверяются с имеющимися в БД, после чего формируются уведомления, если обнаружены изменения.

+
+

Почему не использовать Webhook?

+

Не везде имется возможность установить произвольные Webhook. Например, вряд ли кто-то позволит вам установить Webhook из корпоративного GitLab во внешнюю сеть. Переодическое обращение к GitLab API можно выполнять прямо с рабочей машины.

+

В будущем планирую добавить поддержку и Webhook.

+
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/architecture/img/schema-database.png b/gitlab-notification/ru/v.1.0.0/architecture/img/schema-database.png new file mode 100644 index 0000000..36b6c38 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/architecture/img/schema-database.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/favicon.png b/gitlab-notification/ru/v.1.0.0/assets/images/favicon.png new file mode 100644 index 0000000..1cf13b9 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/favicon.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/architecture/concept.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/architecture/concept.png new file mode 100644 index 0000000..9b3d977 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/architecture/concept.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/changelog/index.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/changelog/index.png new file mode 100644 index 0000000..d86e084 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/changelog/index.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/features/interaction-bot.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/features/interaction-bot.png new file mode 100644 index 0000000..935c9a7 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/features/interaction-bot.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/features/interaction-gitlab.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/features/interaction-gitlab.png new file mode 100644 index 0000000..040b31e Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/features/interaction-gitlab.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/features/notify.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/features/notify.png new file mode 100644 index 0000000..7ea91e1 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/features/notify.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/configuration.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/configuration.png new file mode 100644 index 0000000..4a691ab Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/configuration.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/create-gitlab-token.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/create-gitlab-token.png new file mode 100644 index 0000000..e134a74 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/create-gitlab-token.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/creating-telegram-bot.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/creating-telegram-bot.png new file mode 100644 index 0000000..2fc918f Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/creating-telegram-bot.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/first-start.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/first-start.png new file mode 100644 index 0000000..65f6d8d Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/getting-started/first-start.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/index.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/index.png new file mode 100644 index 0000000..30b21e1 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/index.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/privacy/index.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/privacy/index.png new file mode 100644 index 0000000..767438e Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/privacy/index.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/images/social/support-development/index.png b/gitlab-notification/ru/v.1.0.0/assets/images/social/support-development/index.png new file mode 100644 index 0000000..0e462b3 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/assets/images/social/support-development/index.png differ diff --git a/gitlab-notification/ru/v.1.0.0/assets/javascripts/bundle.960d13ef.min.js b/gitlab-notification/ru/v.1.0.0/assets/javascripts/bundle.960d13ef.min.js new file mode 100644 index 0000000..dec81d3 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/assets/javascripts/bundle.960d13ef.min.js @@ -0,0 +1,3 @@ +"use strict";(()=>{var Wi=Object.create;var Ar=Object.defineProperty;var Di=Object.getOwnPropertyDescriptor;var Ni=Object.getOwnPropertyNames,Vt=Object.getOwnPropertySymbols,zi=Object.getPrototypeOf,Cr=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable;var un=(e,t,r)=>t in e?Ar(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,j=(e,t)=>{for(var r in t||(t={}))Cr.call(t,r)&&un(e,r,t[r]);if(Vt)for(var r of Vt(t))mn.call(t,r)&&un(e,r,t[r]);return e};var dn=(e,t)=>{var r={};for(var n in e)Cr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Vt)for(var n of Vt(e))t.indexOf(n)<0&&mn.call(e,n)&&(r[n]=e[n]);return r};var qt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Vi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ni(t))!Cr.call(e,o)&&o!==r&&Ar(e,o,{get:()=>t[o],enumerable:!(n=Di(t,o))||n.enumerable});return e};var Lt=(e,t,r)=>(r=e!=null?Wi(zi(e)):{},Vi(t||!e||!e.__esModule?Ar(r,"default",{value:e,enumerable:!0}):r,e));var bn=qt((kr,hn)=>{(function(e,t){typeof kr=="object"&&typeof hn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(kr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(M){return!!(M&&M!==document&&M.nodeName!=="HTML"&&M.nodeName!=="BODY"&&"classList"in M&&"contains"in M.classList)}function p(M){var Ne=M.type,H=M.tagName;return!!(H==="INPUT"&&a[Ne]&&!M.readOnly||H==="TEXTAREA"&&!M.readOnly||M.isContentEditable)}function c(M){M.classList.contains("focus-visible")||(M.classList.add("focus-visible"),M.setAttribute("data-focus-visible-added",""))}function l(M){M.hasAttribute("data-focus-visible-added")&&(M.classList.remove("focus-visible"),M.removeAttribute("data-focus-visible-added"))}function f(M){M.metaKey||M.altKey||M.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(M){n=!1}function d(M){s(M.target)&&(n||p(M.target))&&c(M.target)}function h(M){s(M.target)&&(M.target.classList.contains("focus-visible")||M.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),l(M.target))}function v(M){document.visibilityState==="hidden"&&(o&&(n=!0),Q())}function Q(){document.addEventListener("mousemove",K),document.addEventListener("mousedown",K),document.addEventListener("mouseup",K),document.addEventListener("pointermove",K),document.addEventListener("pointerdown",K),document.addEventListener("pointerup",K),document.addEventListener("touchmove",K),document.addEventListener("touchstart",K),document.addEventListener("touchend",K)}function ae(){document.removeEventListener("mousemove",K),document.removeEventListener("mousedown",K),document.removeEventListener("mouseup",K),document.removeEventListener("pointermove",K),document.removeEventListener("pointerdown",K),document.removeEventListener("pointerup",K),document.removeEventListener("touchmove",K),document.removeEventListener("touchstart",K),document.removeEventListener("touchend",K)}function K(M){M.target.nodeName&&M.target.nodeName.toLowerCase()==="html"||(n=!1,ae())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Q(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var vn=qt(Hr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var l={next:function(){var f=c.shift();return{done:f===void 0,value:f}}};return r&&(l[Symbol.iterator]=function(){return l}),l},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(f){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof f;if(m!=="undefined")if(m==="string")f!==""&&this._fromString(f);else if(f instanceof c){var d=this;f.forEach(function(ae,K){d.append(K,ae)})}else if(f!==null&&m==="object")if(Object.prototype.toString.call(f)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var f=0;f1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Hr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(p,c){typeof p!="string"&&(p=String(p)),c&&typeof c!="string"&&(c=String(c));var l=document,f;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),l=document.implementation.createHTMLDocument(""),f=l.createElement("base"),f.href=c,l.head.appendChild(f);try{if(f.href.indexOf(c)!==0)throw new Error(f.href)}catch(M){throw new Error("URL unable to set base "+c+" due to "+M)}}var m=l.createElement("a");m.href=p,f&&(l.body.appendChild(m),m.href=m.href);var d=l.createElement("input");if(d.type="url",d.value=p,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Q=!0,ae=this;["append","delete","set"].forEach(function(M){var Ne=h[M];h[M]=function(){Ne.apply(h,arguments),v&&(Q=!1,ae.search=h.toString(),Q=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var K=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==K&&(K=this.search,Q&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(p){Object.defineProperty(a,p,{get:function(){return this._anchorElement[p]},set:function(c){this._anchorElement[p]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(p){s(p)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(p){this._anchorElement.search=p,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var p=this;return function(){return p.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(p){this._anchorElement.href=p,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(p){this._anchorElement.pathname=p},enumerable:!0},origin:{get:function(){var p={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=p&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(p){},enumerable:!0},username:{get:function(){return""},set:function(p){},enumerable:!0}}),i.createObjectURL=function(p){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(p){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Hr)});var on=qt((Ut,nn)=>{(function(t,r){typeof Ut=="object"&&typeof nn=="object"?nn.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Ut=="object"?Ut.ClipboardJS=r():t.ClipboardJS=r()})(Ut,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ui}});var a=i(279),s=i.n(a),p=i(370),c=i.n(p),l=i(817),f=i.n(l);function m(D){try{return document.execCommand(D)}catch(A){return!1}}var d=function(A){var L=f()(A);return m("cut"),L},h=d;function v(D){var A=document.documentElement.getAttribute("dir")==="rtl",L=document.createElement("textarea");L.style.fontSize="12pt",L.style.border="0",L.style.padding="0",L.style.margin="0",L.style.position="absolute",L.style[A?"right":"left"]="-9999px";var I=window.pageYOffset||document.documentElement.scrollTop;return L.style.top="".concat(I,"px"),L.setAttribute("readonly",""),L.value=D,L}var Q=function(A,L){var I=v(A);L.container.appendChild(I);var U=f()(I);return m("copy"),I.remove(),U},ae=function(A){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},I="";return typeof A=="string"?I=Q(A,L):A instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(A==null?void 0:A.type)?I=Q(A.value,L):(I=f()(A),m("copy")),I},K=ae;function M(D){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?M=function(L){return typeof L}:M=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},M(D)}var Ne=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},L=A.action,I=L===void 0?"copy":L,U=A.container,G=A.target,Pe=A.text;if(I!=="copy"&&I!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(G!==void 0)if(G&&M(G)==="object"&&G.nodeType===1){if(I==="copy"&&G.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(I==="cut"&&(G.hasAttribute("readonly")||G.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Pe)return K(Pe,{container:U});if(G)return I==="cut"?h(G):K(G,{container:U})},H=Ne;function B(D){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?B=function(L){return typeof L}:B=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},B(D)}function se(D,A){if(!(D instanceof A))throw new TypeError("Cannot call a class as a function")}function me(D,A){for(var L=0;L0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof U.action=="function"?U.action:this.defaultAction,this.target=typeof U.target=="function"?U.target:this.defaultTarget,this.text=typeof U.text=="function"?U.text:this.defaultText,this.container=B(U.container)==="object"?U.container:document.body}},{key:"listenClick",value:function(U){var G=this;this.listener=c()(U,"click",function(Pe){return G.onClick(Pe)})}},{key:"onClick",value:function(U){var G=U.delegateTarget||U.currentTarget,Pe=this.action(G)||"copy",zt=H({action:Pe,container:this.container,target:this.target(G),text:this.text(G)});this.emit(zt?"success":"error",{action:Pe,text:zt,trigger:G,clearSelection:function(){G&&G.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(U){return Lr("action",U)}},{key:"defaultTarget",value:function(U){var G=Lr("target",U);if(G)return document.querySelector(G)}},{key:"defaultText",value:function(U){return Lr("text",U)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(U){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return K(U,G)}},{key:"cut",value:function(U){return h(U)}},{key:"isSupported",value:function(){var U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],G=typeof U=="string"?[U]:U,Pe=!!document.queryCommandSupported;return G.forEach(function(zt){Pe=Pe&&!!document.queryCommandSupported(zt)}),Pe}}]),L}(s()),Ui=Fi},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,p){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(p))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(l,f,m,d,h){var v=c.apply(this,arguments);return l.addEventListener(m,v,h),{destroy:function(){l.removeEventListener(m,v,h)}}}function p(l,f,m,d,h){return typeof l.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(v){return s(v,f,m,d,h)}))}function c(l,f,m,d){return function(h){h.delegateTarget=a(h.target,f),h.delegateTarget&&d.call(l,h)}}n.exports=p},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function p(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return l(m,d,h);if(a.string(m))return f(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function l(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function f(m,d,h){return s(document.body,m,d,h)}n.exports=p},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var p=window.getSelection(),c=document.createRange();c.selectNodeContents(i),p.removeAllRanges(),p.addRange(c),a=p.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var p=this.e||(this.e={});return(p[i]||(p[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var p=this;function c(){p.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),p=0,c=s.length;for(p;p{"use strict";var bs=/["'&<>]/;ai.exports=vs;function vs(e){var t=""+e,r=bs.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,a,s,p,c)=>{if(a===`${this.url}`){let l=new ErrorEvent("error",{message:i,filename:a,lineno:s,colno:p,error:c});this.dispatchEvent(l),this.onerror&&this.onerror(l)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + + + +

ChangeLog⚓︎

+

v.0.1.0⚓︎

+

Это первая стабильная публичная версия бота, которую я тестировал пару месяцев на своей работе.

+ + + + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/features/img/gitlab-thread-answer.png b/gitlab-notification/ru/v.1.0.0/features/img/gitlab-thread-answer.png new file mode 100644 index 0000000..dfbec4e Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/gitlab-thread-answer.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-conflict-mr.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-conflict-mr.png new file mode 100644 index 0000000..ad395b2 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-conflict-mr.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-comment-in-thread-without-context.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-comment-in-thread-without-context.png new file mode 100644 index 0000000..0d84677 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-comment-in-thread-without-context.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-comment-in-thread.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-comment-in-thread.png new file mode 100644 index 0000000..b6f0f1f Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-comment-in-thread.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-mr.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-mr.png new file mode 100644 index 0000000..8e96359 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-mr.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-pipeline.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-pipeline.png new file mode 100644 index 0000000..53ef6cd Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-pipeline.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-project.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-project.png new file mode 100644 index 0000000..b9691ea Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-project.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-thread-without-context.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-thread-without-context.png new file mode 100644 index 0000000..cbe44a8 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-thread-without-context.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-new-thread.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-thread.png new file mode 100644 index 0000000..f0a42ce Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-new-thread.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-update-mr.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-update-mr.png new file mode 100644 index 0000000..068d818 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-update-mr.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/notify-update-status-mr.png b/gitlab-notification/ru/v.1.0.0/features/img/notify-update-status-mr.png new file mode 100644 index 0000000..289c766 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/notify-update-status-mr.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/img/telegram-thread-answer.png b/gitlab-notification/ru/v.1.0.0/features/img/telegram-thread-answer.png new file mode 100644 index 0000000..d18a90e Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/features/img/telegram-thread-answer.png differ diff --git a/gitlab-notification/ru/v.1.0.0/features/interaction-bot/index.html b/gitlab-notification/ru/v.1.0.0/features/interaction-bot/index.html new file mode 100644 index 0000000..231f634 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/features/interaction-bot/index.html @@ -0,0 +1,1119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Взаимодействие с ботом - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Взаимодействие с ботом⚓︎

+

Главное меню бота вызывается с помощью команды /start

+
+

Note

+

На данный момент главное меню содержит только пункт: "Добавить новый репозиторий". В будущем функционал существенно расширится.

+
+

Добавить новый репозиторий⚓︎

+

Если во время первичной инициализации не стали добавлять все доступные репозитории, или не включили автоматическое отслеживание появления новых репозиториев, то вы можете добавлять репозитории самостоятельно.

+

Для этого:

+
    +
  • Вызовите главное меню командой /start
  • +
  • Выберете пункт Add repository, который позволяет поставить репозиторий на отслеживание
  • +
  • Скопируйте ссылку на репозиторий из адресной строки браузера и отправьте ее боту.
  • +
  • Если все пройдет успешно, то вы получите уведомление 👍 Projects added successfully!
  • +
+

Это позволит вам получать все уведомления репозитория и его сущностей, таких как MR, пайплайны и так далее.

+
+

Массовое добавление

+

Если вы хотите добавить множество репозиториев разом, то вы можете это сделать. Сформируйте сообщение с несколькими ссылками, где каждая ссылка на репозиторий будет на новой строке:

+
https://gitlab.com/groupname/projectname1/repositoryname1
+https://gitlab.com/groupname/projectname1/repositoryname2
+https://gitlab.com/groupname/projectname2/repositoryname3
+
+
+

Быстрые действия⚓︎

+

Быстрые действия выглядят в виде кнопок под уведомлением, и позволяют в одно нажатие изменять настройки бота.

+

Самые частые быстрые действия:

+
    +
  • 👀 — прочитано. Просто удаляет сообщение.
  • +
  • 🔗 — ссылка для перехода в GitLab.
  • +
  • 🔕 — отключить уведомления данного типа.
  • +
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/features/interaction-gitlab/index.html b/gitlab-notification/ru/v.1.0.0/features/interaction-gitlab/index.html new file mode 100644 index 0000000..09107a8 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/features/interaction-gitlab/index.html @@ -0,0 +1,1090 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Взаимодействие с GitLab - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Взаимодействие с GitLab⚓︎

+

Здесь собраны все возможности, которые позволяют вам что-то сделать в GitLab прямо из Telegram.

+
+

Warning

+

Все эти функции работают, если при создании GitLab токена вы указали уровень доступа api.

+
+

Ответ в треде⚓︎

+

Допустим вас упомянули в обсуждении, сразу знаете что ответить? Не тратьте время, отвечайте прямо из телеграм. Для этого просто ответьте на сообщение и напишите ваш комментарий.

+

Просто ответьте на сообщение уведомления:

+
+

telegram-thread-answer.png

+
+

Так это будет выглядеть в GitLab:

+
+

gitlab-thread-answer.png

+
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/features/notify/index.html b/gitlab-notification/ru/v.1.0.0/features/notify/index.html new file mode 100644 index 0000000..b633dd8 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/features/notify/index.html @@ -0,0 +1,1395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Уведомления - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

🔔 Уведомления⚓︎

+

Основное предназначение бота - это уведомления от GitLab. Вы будете получать только те уведомления, которые касаются вас непосредственно.

+

Новый репозиторий⚓︎

+

Если во время первичной настройки вы указали, что хотите получать уведомления о новых репозиториях, то при появлении нового репозитория получите соответствующее уведомление:

+
+

notify about new merge request

+
+

Уведомление содержит:

+
    +
  • GitLab Notify — название репозитория.
  • +
  • Project description — описание репозитория. Опционально, может быть пусто.
  • +
  • ssh, http — ссылки на удаленный репозиторий. При нажатии будет скопирована в буфер обмена.
  • +
  • Author Name — имя создателя репозитория в GitLab
  • +
+

Доступно три быстрых действия:

+
    +
  • 🔗 — ссылка на новый репозиторий в GitLab.
  • +
  • 🔔 — поставить на отслеживание. Вы начнете получать уведомления о событиях в MR, тредах и сборках.
  • +
  • 🔕 — не получать уведомления. Используется по умолчанию, по факту просто удаляет сообщение уведомления.
  • +
+
+

Отслеживание репозитория

+

Пока вы явно не нажмете 🔔, вы не будете получать никаких уведомлений. Более того, приложение даже не будет запрашивать MR и прочие сущности репозитория, не будет сохранять их в БД.

+
+

Новый MR⚓︎

+

Это уведомление приходит, когда вас назначают ответственным и/или ревьювером. При этом не важно когда это произошло: вас указали при создании MR, или потом заменили кого-то вами. Вы в любом случае получите уведомление.

+
+

notify about new merge request

+
+

Уведомление содержит:

+
    +
  • Название MR.
  • +
  • Описание MR. Опционально.
  • +
  • Labels. Метки репозитория.
  • +
  • Имя проекта.
  • +
  • Ветки откуда куда мержим.
  • +
  • Автор MR.
  • +
  • Ответственный/Ревьюверы MR. Заполнение зависит от вашей позиции в этом MR. Если вы ответственный, то вам покажут ревьюверов. Если вы ревьювер, то ответственного.
  • +
+

Доступные быстрые действия:

+
    +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на MR.
  • +
  • 🔕 — не получать уведомления по MR.
  • +
+
+

Warning

+

Учтите, что отключение уведомлений отключает только уведомления об изменениях в MR. Например, обновление статуса MR. Но уведомления по пайплайнам проекта, по тредам MR продолжат приходить.

+
+

Конфликт в MR⚓︎

+

Если в вашем MR возник конфликт, то вы будете своевременно оповещены. В этом уведомлении указывается название MR, проект и ветка.

+
+

notify about conflict in merge request

+
+

Доступные быстрые действия:

+
    +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на MR.
  • +
  • 🔕 — не получать уведомления по этому MR.
  • +
+

Обновление MR⚓︎

+

Если в MR, в котором вы являетесь ответственным/ревьювером, добавляются коммиты, вы получаете уведомление.

+
+

notify about update in merge request

+
+

Уведомление содержит:

+
    +
  • Название MR.
  • +
  • Отношение количества закрытых тредов к общему количеству созданных тредов.
  • +
  • Отношение количества закрытых вами созданных тредов к общему количеству созданных вами тредов.
  • +
  • Название репозитория.
  • +
  • Имя создателя MR.
  • +
+

Доступные быстрые действия:

+
    +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на MR.
  • +
  • 🔕 — не получать уведомления по этому MR.
  • +
+

Изменение статуса MR⚓︎

+

Когда статус вашего MR меняется, вы получаете уведомление.

+
+

notify about update status in merge request

+
+

Доступные быстрые действия:

+
    +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на MR.
  • +
+

Новый тред в MR⚓︎

+

В GitLab можно создавать не просто комментарии, а треды. Если кто-то создаст такое обсуждение в вашем MR, то вы сразу об этом узнаете.

+

Это уведомление поддерживает уровни конфиденциальности:

+
    +
  1. WITHOUT_NOTIFY — уведомления по тредам не отправляются совсем.
  2. +
  3. NOTIFY_WITHOUT_CONTEXT — вы получаете уведомление о факте нового треда, но без текста сообщений и отправителей.
  4. +
  5. NOTIFY_WITHOUT_CONTEXT — самое подробное уведомление. Содержит текст сообщений и имена отправителей.
  6. +
+
+
+
+

+notify about new thread in merge request +

+

Уведомление содержит:

+
    +
  • Название MR
  • +
  • Первое сообщение треда с автором треда
  • +
  • Остальные сообщения треда, если таковые имеются.
  • +
+
+
+

+notify about new thread in merge request +

+

Уведомление содержит:

+
    +
  • Название MR
  • +
+
+
+
+

Доступные быстрые действия:

+
    +
  • Ответ в GitLab из Telegram.
  • +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на тред.
  • +
  • 🔕 — не получать уведомления по этому треду. Уведомления по другим тредам в это MR продолжат поступать.
  • +
+

Новое сообщение в треде⚓︎

+

Важно оставаться в теме обсуждения, поэтому при появлении новых ответов в тредах, в которых вы участвовали, вы получите уведомление.

+

Это уведомление поддерживает уровни конфиденциальности:

+
    +
  1. WITHOUT_NOTIFY — уведомления по тредам не отправляются совсем.
  2. +
  3. NOTIFY_WITHOUT_CONTEXT — вы получаете уведомление о факте нового треда, но без текста сообщений и отправителей.
  4. +
  5. NOTIFY_WITHOUT_CONTEXT — самое подробное уведомление. Содержит текст сообщений и имена отправителей.
  6. +
+
+
+
+

+notify about new message in thread +

+

Уведомление содержит:

+
    +
  • Название MR
  • +
  • Первое сообщение треда с автором треда
  • +
  • Предпоследнее сообщение треда
  • +
  • Новое сообщение треда
  • +
+
+

Такой объем информации должен помочь вам вспомнить/понять контекст обсуждения и ответить прямо из Telegram.

+
+
+
+

+notify about new comment in thread without context +

+

Уведомление содержит:

+
    +
  • Название MR
  • +
+
+
+
+

Доступные быстрые действия:

+
    +
  • Ответ в GitLab из Telegram.
  • +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на тред.
  • +
  • 🔕 — не получать уведомления по этому треду. Уведомления по другим тредам в это MR продолжат поступать.
  • +
+

Упоминание в треде⚓︎

+

Допустим, кто-то упомянул вас в MR используя тегирование GitLab (@GitlabLogin). Автор этого MR не вы, ответственным назначали тоже не вас.

+

Если вы отслеживаете репозиторий этого MR, но не участвовали в дискуссии, то в этом случае вам придет уведомление. Так вы не пропустите сообщения с вашим упоминанием.

+

Формат и быстрые действия такие же, как у уведомления "Новое сообщение в треде".

+

Уведомление о решенном треде⚓︎

+

Если кто-то отметит решенным созданный вами тред, вы получите уведомление об этом.

+

Уведомление о пайплайне⚓︎

+

Полезно сразу узнавать, что сборка закончилась успешно или упала.

+
+

Я буду получать уведомление обо всех пайплайнах?

+

Нет. Вы будете получать уведомление только о тех пайплайнах, в которых выступили инициатором. Напримр, запустили CI руками из GitLab, или нажали кнопку Merge в MR.

+
+
+

notify about new pipeline

+
+

Уведомление содержит:

+
    +
  • Предыдущий статус пайплайна и новый статус
  • +
  • Номер пайплайна
  • +
  • Название репозитория
  • +
  • Ветка, для которой запускалась сборка
  • +
+

Доступные быстрые действия:

+
    +
  • 👀 — прочитано. Удаляет сообщение.
  • +
  • 🔗 — ссылка на результат работы пайплайна.
  • +
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/getting-started/configuration/index.html b/gitlab-notification/ru/v.1.0.0/getting-started/configuration/index.html new file mode 100644 index 0000000..2502b5b --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/getting-started/configuration/index.html @@ -0,0 +1,1195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Первый запуск бота - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Первый запуск бота⚓︎

+

Есть несколько способов запустить бота-помощника. Бот был спроектирован таким образом, чтобы работать локально на вашем ПК, но вы можете запустить его на сервере в режиме 24/4.

+

Для начала выполните эти действия:

+
    +
  1. Создание бота в Telegram
  2. +
  3. Получение персонального токена в GitLab
  4. +
+

Переменные среды⚓︎

+

Вне зависимости от того, какой способ вы выберете, необходимо будет указать данные переменные среды:

+
    +
  • TELEGRAM_BOT_TOKEN — токен, который вы получили при создании бота.
  • +
  • TELEGRAM_BOT_USERNAME — название, которое вы дали боту. Оканчивается на bot.
  • +
  • GITLAB_PERSONAL_TOKEN — токен, который вы получили в GitLab.
  • +
  • TELEGRAM_PERSON_ID — ваш идентификатор в telegram, можно узнать в боте @myidbot.
  • +
  • GITLAB_URL — url на GitLab. Локальный или облачный.
  • +
  • DATASOURCE_URL — ссылка на базу данных Postgres, в следующем формате: jdbc:postgresql://databasehost:5432/gitlab_bot
  • +
  • DATASOURCE_USERNAME — пользователь БД
  • +
  • DATASOURCE_PASSWORD — пароль от БД
  • +
+

Запуск Docker Compose⚓︎

+

Самый простой способ запустить ассистента, - это docker compose. Создайте файлы docker-compose.yml и .env. Не забудьте в .env указать все необходимые для запуска переменные.

+
+
+
+
version: '3.8'
+
+services:
+
+gitlab-bot-database:
+    image: postgres:15.1-alpine
+    restart: always
+    hostname: gitlab-bot-database
+    container_name: gitlab-bot-database
+    networks:
+        gitlab-bot:
+    environment:
+        POSTGRES_DB: "gitlab_bot"
+        POSTGRES_USER: "postgres"
+        POSTGRES_PASSWORD: ${DATASOURCE_PASSWORD}
+    volumes:
+        - gitlab-bot-database:/var/lib/postgresql/data/
+
+gitlab-bot:
+    image: upagge/gitlab-telegram-notify:latest
+    hostname: gitlab-bot
+    container_name: gitlab-bot
+    networks:
+        gitlab-bot:
+    depends_on:
+        - gitlab-bot-database
+    environment:
+        TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
+        TELEGRAM_BOT_USERNAME: ${TELEGRAM_BOT_USERNAME}
+        GITLAB_PERSONAL_TOKEN: ${GITLAB_PERSONAL_TOKEN}
+        TELEGRAM_PERSON_ID: ${TELEGRAM_PERSON_ID}
+        GITLAB_URL: ${GITLAB_URL}
+        DATASOURCE_URL: "jdbc:postgresql://gitlab-bot-database:5432/gitlab_bot"
+        DATASOURCE_USERNAME: ${DATASOURCE_USERNAME}
+        DATASOURCE_PASSWORD: ${DATASOURCE_PASSWORD}
+
+volumes:
+    gitlab-bot-database:
+
+networks:
+    gitlab-bot:
+
+
+
+
TELEGRAM_BOT_TOKEN=
+TELEGRAM_BOT_USERNAME=
+GITLAB_PERSONAL_TOKEN=
+TELEGRAM_PERSON_ID=
+GITLAB_URL=
+DATASOURCE_USERNAME=
+DATASOURCE_PASSWORD=
+
+
+
+
+

Теперь запустите композ:

+
docker compose up -d
+
+

Запуск Docker⚓︎

+

Команда для запуска выглядит следующим образом:

+
docker run --name gitlab-notify  \
+    --env TELEGRAM_BOT_TOKEN=value \
+    --env TELEGRAM_BOT_USERNAME=value \
+    --env GITLAB_PERSONAL_TOKEN=value \
+    --env TELEGRAM_PERSON_ID=value \
+    --env GITLAB_URL=value \
+    --env DATASOURCE_URL=jdbc:postgresql://localhost:5432/gitlab_bot \
+    --env DATASOURCE_USERNAME=postgres \
+    --env DATASOURCE_PASSWORD=value \
+    --network="host" upagge/gitlab-telegram-notify:latest
+
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/getting-started/create-gitlab-token/index.html b/gitlab-notification/ru/v.1.0.0/getting-started/create-gitlab-token/index.html new file mode 100644 index 0000000..0ea46f7 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/getting-started/create-gitlab-token/index.html @@ -0,0 +1,1040 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Создание токена GitLab - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Создание токена GitLab⚓︎

+

Для взаимодействия с GitLab необходим персональный токен доступа.

+

Чтобы его получить перейдите по адресу: https://gitlab.com/-/profile/personal_access_tokens

+
+

Корпоративный GitLab

+

Замените https://gitlab.com/ на адрес своего GitLab, если вы используете self-host решение.

+
+
    +
  • Придумайте название токену, например, GitLab Notify.
  • +
  • Выдайте права на чтение - read_api
  • +
+
+

Уровень разрешений

+

Выберете уровень разрешения api, если планируете пользоваться такими функциями, как: ответ в треде

+
+
    +
  • Нажмите кнопку Create personal access token.
  • +
  • Сохраните полученный токен.
  • +
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/getting-started/creating-telegram-bot/index.html b/gitlab-notification/ru/v.1.0.0/getting-started/creating-telegram-bot/index.html new file mode 100644 index 0000000..d335b84 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/getting-started/creating-telegram-bot/index.html @@ -0,0 +1,1035 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Регистрируем бота в Telegram - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Регистрируем бота в Telegram⚓︎

+

Перед первым запуском необходимо создать бота в Telegram. Для этого перейдите в официального бота @GodFather и выполните команду /newbot.

+
+

Имя бота

+

Первые два пункта диалогового меню будет про название бота. Учтите, что это называние общедоступно и случайноы пользователь Telegram сможет найти вашего бота.

+

Не переживайте, приложение имеет встроенную защиту от несанкционарованного доступа к боту. Но не смотря на это, не рекомендуется использовать в названии бота название организации, или вашу фамилию. Лучше использовать случайное имя.

+
+

После регистрации вам будет выдан токен доступа. Он будет использоваться при запуске ассистента.

+

Видео процесса:

+
+
+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/getting-started/first-start/index.html b/gitlab-notification/ru/v.1.0.0/getting-started/first-start/index.html new file mode 100644 index 0000000..986da23 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/getting-started/first-start/index.html @@ -0,0 +1,1032 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Первичная настройка - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

Первичная настройка⚓︎

+

Первичная настройка выполняется один раз после первого запуска бота. Она позволяет задать первоначальную конфигурацию поведения сканирования и прочих параметров.

+

В данном видео демонстрируется процесс первичной настройки бота, чтобы вы знали, чего ожидать:

+
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/getting-started/mp4/create-telegram-bot.mp4 b/gitlab-notification/ru/v.1.0.0/getting-started/mp4/create-telegram-bot.mp4 new file mode 100644 index 0000000..e613322 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/getting-started/mp4/create-telegram-bot.mp4 differ diff --git a/gitlab-notification/ru/v.1.0.0/getting-started/mp4/init-start.mp4 b/gitlab-notification/ru/v.1.0.0/getting-started/mp4/init-start.mp4 new file mode 100644 index 0000000..9b582a2 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/getting-started/mp4/init-start.mp4 differ diff --git a/gitlab-notification/ru/v.1.0.0/index.html b/gitlab-notification/ru/v.1.0.0/index.html new file mode 100644 index 0000000..9058ce4 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/index.html @@ -0,0 +1,1072 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + GitLab Notification in Telegram - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + + + +

GitLab Notification – Персональный Telegram бот для GitLab⚓︎

+

Запустите своего личного GitLab бота и получайте персональные уведомления из GitLab прямо на свой аккаунт в Telegram! Это не облачное решение, бот запускается на вашей машине или вашем сервере.

+

Вы больше никогда не пропустите важное уведомление. Будь то новый запрос на слияние или возникновение конфликта. Больше не нужно заходить в GitLab, чтобы проверить статус сборки - с нашим приложением вы сможете оставаться в курсе дел, где бы вы ни находились.

+

Бота легко настроить и использовать, а быстрые действия призваны оптимизировать ваш рабочий процесс. Не ждите больше - запустите своего персонального Telegram бота, и получайте персональные уведомления о событиях в GitLab.

+
+

notify-about-new-mr

+
Пример уведомления от бота
+
+
+

Что-то здесь не чисто

+

Я понимаю, что GitLab часто содержит конфиденциальные данные, утечка которых не желательна. Поэтому я оформил отдельную страницу, на которой собрал ответы на вопросы безопасности и конфеденциалоьности.

+
+

Основные возможности⚓︎

+
    +
  • Уведомление о новых MR, где вы ревьювер или ответственный.
  • +
  • Уведомление о результате работы сборки.
  • +
  • Уведомление о возникновении конфликта в вашем MR.
  • +
  • Уведомление о треде, в которых вас упоминают в формате @nickname.
  • +
  • Уведомление о смене статуса вашего MR.
  • +
  • И многое многое другое...
  • +
+
+

Создать персонального ассистента

+ + + + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/privacy/index.html b/gitlab-notification/ru/v.1.0.0/privacy/index.html new file mode 100644 index 0000000..db3a4d5 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/privacy/index.html @@ -0,0 +1,1175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Защита данных - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + +

🥷 Защита данных⚓︎

+

Я понимаю, что в GitLab содержится множество конфиденциальной информации, которую не хотелось бы раскрывать. Эта страница пытается ответить на все вопросы, которые могут вас смущать.

+

Об авторе бота⚓︎

+

Давайте знакомится. Меня зовут Стручков Марк, я тимлид небольшой команды. В свободное время веду блог и "блокнот." Это приложение в первую очередь должно помогать мне работать, оптимизируя мое взаимодействие с GitLab.

+

В какой-то момент я решил подлиться своими наработками со всеми желающими. И пытаться кому-то что-то доказать у меня нет желания. Что-то смущает? Не пользуйтесь. В этом весь Open Source.

+

Вы можете самостоятельно изучить код, он полностью открыт, доступен, и не сложен. После проверки можно самостоятельно собрать jar и упаковать его в Docker. Либо запускать прямо из Idea.

+

На мой взгляд довольно очевидно, что если бы я преднамеренно замышлял какую-нибудь пакость, то не стал бы делать это от своего имени. Однако некоторые вектора атаки существуют, и я постараюсь описать их на этой странице.

+

Защита токена GitLab⚓︎

+

Для работы ассистента необходим персональный токен GitLab. Достаточно токена с правами только на чтение. Он указывается в переменные среды и нигде дополнительно не хранится и не передается. Таким образом токен не попадает в Telegram, никуда не передается, и хранится только у вас на компьютере и в контейнере приложения.

+

Токен используется только при обращении к указанному GitLab, и только для выполнения описанных в документации возможностей. Никакой скрытой работы не выполняется, по возможности обо всех взаимодействиях с GitLab дополнительно сообщается в диалоговом режиме, особенно во время первичной настройки.

+
+

А что, если ты украдешь токен?

+

Я еще раз повторяю, что в мои планы не входит что-то кому-то доказывать. Это open source, детка, изучайте код и позорьте мое честное имя перед сообществом, если что-то найдете.

+

Задайте себе вопрос: насколько полезен токен от вашего корпоративного self-host гитлаба без подключения к корпоративному VPN.

+
+

Уровни конфиденциальности⚓︎

+

Некоторые уведомления могут содержать множество чувствительной информации. Например, уведомления о новых сообщениях в тредах. Возможно вы не захотите раскрывать столько информации о вашей разработке телеграму, ведь через него идет получение уведомлений. Специально для таких случаев предусмотрены уровни конфиденциальности разных типов уведомлений.

+

Возьмем для примера уведомление о новом сообщении в треде. При минимальном уровне конфиденциальности вы получите уведомление с текстом комментария и сможете сразу ответить на него в телеграм, а при максимальном уровне конфиденциальности будет сообщаться только о факте нового комментария, без содержания. Все это настраивается при первом запуске.

+

Сохранение в БД⚓︎

+

Для работы ассистента ему нужно сохранять предыдущее состояние GitLab сущностей. Для этого используется БД. Приложение старается не хранить в БД больше данных, чем необходимо. Как только необходимость в данных теряется, например MR мержится, данные из БД удаляются.

+

Прочитать подробнее можно в разделе: Работа с базой данных

+

Несанкционированный доступ⚓︎

+

Все боты в Telegram являются публичными. Это значит, что ваш бот может быть найден через поиск в Telegram. Поэтому не рекомендуется давать название боту, которое может раскрыть его предназначение.

+

Даже если кто-то случайно напишет вашему боту ничего не случится. В боте встроена проверка прав доступа. Вот как она работает:

+
    +
  1. При запуске вы указываете ваш идентификатор в Telegram. В отличие от логина, идентификатор уникален для каждого пользователя и нет возможности его подменить.
  2. +
  3. Когда бот получает сообщение, он проверяет идентификатор отправителя
  4. +
  5. Если идентификатор отправителя не совпадает с указанным при запуске, бот не обрабатывает команду
  6. +
  7. Вы получаете уведомление о том, что такой-то пользователь пытался написать в ваш бот. Вам доступен логин этого пользователя в Telegram, а также текст его сообщения. Это поможет понять является ли попытка доступа злонамеренной и принять меры.
  8. +
+
+

unauth-access.png +

+
уведомление о несанкционированном доступе
+
+

Для злоумышленника все выглядит так, как будто бот не работает. Никаких ответных сообщений ему не отправляется.

+

Взлом Telegram⚓︎

+

Если ваш Telegram аккаунт взломают, то взломщику станет доступна вся переписка с ботом. Поэтому рекомендую нажимать на быстрое действие о просмотре сообщения (👀), а также периодически удалять историю переписки.

+ + + + + + + + + + + +

Комментарии

+
+ + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/privacy/unauth-access.png b/gitlab-notification/ru/v.1.0.0/privacy/unauth-access.png new file mode 100644 index 0000000..263a505 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/privacy/unauth-access.png differ diff --git a/gitlab-notification/ru/v.1.0.0/search/search_index.json b/gitlab-notification/ru/v.1.0.0/search/search_index.json new file mode 100644 index 0000000..9b7a488 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["ru"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"GitLab Notification \u2013 \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 Telegram \u0431\u043e\u0442 \u0434\u043b\u044f GitLab","text":"

\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u0438\u0447\u043d\u043e\u0433\u043e GitLab \u0431\u043e\u0442\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0438\u0437 GitLab \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 Telegram! \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0431\u043e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438\u043b\u0438 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.

\u0412\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432\u0430\u0436\u043d\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435. \u0411\u0443\u0434\u044c \u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u0438\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430. \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 GitLab, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 - \u0441 \u043d\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0443\u0440\u0441\u0435 \u0434\u0435\u043b, \u0433\u0434\u0435 \u0431\u044b \u0432\u044b \u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c.

\u0411\u043e\u0442\u0430 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0430 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041d\u0435 \u0436\u0434\u0438\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 - \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e Telegram \u0431\u043e\u0442\u0430, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0432 GitLab.

\u041f\u0440\u0438\u043c\u0435\u0440 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u0431\u043e\u0442\u0430

\u0427\u0442\u043e-\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0447\u0438\u0441\u0442\u043e

\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e GitLab \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0443\u0442\u0435\u0447\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0444\u043e\u0440\u043c\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0431\u0440\u0430\u043b \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043a\u043e\u043d\u0444\u0435\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u043e\u044c\u043d\u043e\u0441\u0442\u0438.

"},{"location":"#key-features","title":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438","text":"
  • \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043d\u043e\u0432\u044b\u0445 MR, \u0433\u0434\u0435 \u0432\u044b \u0440\u0435\u0432\u044c\u044e\u0432\u0435\u0440 \u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439.
  • \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438.
  • \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c MR.
  • \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u0440\u0435\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0430\u0441 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 @nickname.
  • \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0441\u043c\u0435\u043d\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0432\u0430\u0448\u0435\u0433\u043e MR.
  • \u0418 \u043c\u043d\u043e\u0433\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435...

\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430

"},{"location":"architecture/concept/","title":"\u041e\u0431\u0449\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430","text":"

Warning

\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f

\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b: \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0438 \u043d\u0430 \u041f\u041a \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 24/7.

"},{"location":"architecture/concept/#schema-database","title":"\u0421\u0445\u0435\u043c\u0430 \u0411\u0414","text":"

\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 GitLab.

\u0421\u0445\u0435\u043c\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f 1.0.0

\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e \u0432 \u0411\u0414. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u043d \u0440\u044f\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0411\u0414.

\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 MR \u0431\u044b\u043b \u0432\u043c\u0435\u0440\u0436\u0435\u043d \u0438\u043b\u0438 \u0437\u0430\u043a\u0440\u044b\u0442, \u0442\u043e \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u044d\u0442\u043e\u043c MR, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0431 \u044d\u0442\u043e\u043c MR, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u0442\u043e\u0433\u043e MR (\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b, \u0442\u0440\u0435\u0434\u044b...) \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b.

"},{"location":"architecture/concept/#gitlab","title":"\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GitLab","text":"

\u0420\u0430\u0437 \u0432 1 \u043c\u0438\u043d\u0443\u0442\u0443 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a GitLab API \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u043e\u0442 GitLab \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0432 \u0411\u0414, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.

\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Webhook?

\u041d\u0435 \u0432\u0435\u0437\u0434\u0435 \u0438\u043c\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 Webhook. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0440\u044f\u0434 \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Webhook \u0438\u0437 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e GitLab \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c. \u041f\u0435\u0440\u0435\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a GitLab API \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0441 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.

\u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 Webhook.

"},{"location":"changelog/","title":"ChangeLog","text":""},{"location":"changelog/#v010","title":"v.0.1.0","text":"

\u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.

"},{"location":"features/interaction-bot/","title":"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0431\u043e\u0442\u043e\u043c","text":"

\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0431\u043e\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b /start

Note

\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u043d\u043a\u0442: \"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\". \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0441\u044f.

"},{"location":"features/interaction-bot/#add-new-repository","title":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439","text":"

\u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0438\u043b\u0438 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e:

  • \u0412\u044b\u0437\u043e\u0432\u0438\u0442\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 /start
  • \u0412\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u0443\u043d\u043a\u0442 Add repository, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435
  • \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0435\u0435 \u0431\u043e\u0442\u0443.
  • \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \ud83d\udc4d Projects added successfully!

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0435\u0433\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a MR, \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.

\u041c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u0440\u0430\u0437\u043e\u043c, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0421\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:

https://gitlab.com/groupname/projectname1/repositoryname1\nhttps://gitlab.com/groupname/projectname1/repositoryname2\nhttps://gitlab.com/groupname/projectname2/repositoryname3\n
"},{"location":"features/interaction-bot/#fast-actions","title":"\u0411\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f","text":"

\u0411\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043d\u043e\u043f\u043e\u043a \u043f\u043e\u0434 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435\u043c, \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432 \u043e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u043e\u0442\u0430.

\u0421\u0430\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 GitLab.
  • \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430.
"},{"location":"features/interaction-gitlab/","title":"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 GitLab","text":"

\u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0447\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 GitLab \u043f\u0440\u044f\u043c\u043e \u0438\u0437 Telegram.

Warning

\u0412\u0441\u0435 \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 GitLab \u0442\u043e\u043a\u0435\u043d\u0430 \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 api.

"},{"location":"features/interaction-gitlab/#_1","title":"\u041e\u0442\u0432\u0435\u0442 \u0432 \u0442\u0440\u0435\u0434\u0435","text":"

\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0430\u0441 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b\u0438 \u0432 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438, \u0441\u0440\u0430\u0437\u0443 \u0437\u043d\u0430\u0435\u0442\u0435 \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c? \u041d\u0435 \u0442\u0440\u0430\u0442\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u0439\u0442\u0435 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439.

\u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f:

\u0422\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 GitLab:

"},{"location":"features/notify/","title":"\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f","text":"

\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u043e\u0442\u0430 - \u044d\u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0442 GitLab. \u0412\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u0432\u0430\u0441 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e.

"},{"location":"features/notify/#new-repository","title":"\u041d\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439","text":"

\u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445, \u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435:

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • GitLab Notify \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.
  • Project description \u2014 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043e.
  • ssh, http \u2014 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430.
  • Author Name \u2014 \u0438\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 GitLab

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u0440\u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 GitLab.
  • \u2014 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435. \u0412\u044b \u043d\u0430\u0447\u043d\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0432 MR, \u0442\u0440\u0435\u0434\u0430\u0445 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430\u0445.
  • \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f.

\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f

\u041f\u043e\u043a\u0430 \u0432\u044b \u044f\u0432\u043d\u043e \u043d\u0435 \u043d\u0430\u0436\u043c\u0435\u0442\u0435 , \u0432\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c MR \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u0432 \u0411\u0414.

"},{"location":"features/notify/#new-mr","title":"\u041d\u043e\u0432\u044b\u0439 MR","text":"

\u042d\u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0441 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438/\u0438\u043b\u0438 \u0440\u0435\u0432\u044c\u044e\u0432\u0435\u0440\u043e\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e: \u0432\u0430\u0441 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 MR, \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u043a\u043e\u0433\u043e-\u0442\u043e \u0432\u0430\u043c\u0438. \u0412\u044b \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435.

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR.
  • \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 MR. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e.
  • Labels. \u041c\u0435\u0442\u043a\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.
  • \u0418\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430.
  • \u0412\u0435\u0442\u043a\u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u043a\u0443\u0434\u0430 \u043c\u0435\u0440\u0436\u0438\u043c.
  • \u0410\u0432\u0442\u043e\u0440 MR.
  • \u041e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439/\u0420\u0435\u0432\u044c\u044e\u0432\u0435\u0440\u044b MR. \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u044d\u0442\u043e\u043c MR. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043a\u0430\u0436\u0443\u0442 \u0440\u0435\u0432\u044c\u044e\u0432\u0435\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0432\u044c\u044e\u0432\u0435\u0440, \u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e.

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 MR.
  • \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e MR.

Warning

\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 \u0432 MR. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 MR. \u041d\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e \u0442\u0440\u0435\u0434\u0430\u043c MR \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c.

"},{"location":"features/notify/#conflict-mr","title":"\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0432 MR","text":"

\u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c MR \u0432\u043e\u0437\u043d\u0438\u043a \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442, \u0442\u043e \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u044b. \u0412 \u044d\u0442\u043e\u043c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR, \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0435\u0442\u043a\u0430.

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 MR.
  • \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 MR.
"},{"location":"features/notify/#update-mr","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 MR","text":"

\u0415\u0441\u043b\u0438 \u0432 MR, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c/\u0440\u0435\u0432\u044c\u044e\u0432\u0435\u0440\u043e\u043c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0438\u0442\u044b, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435.

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR.
  • \u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u0442\u0440\u0435\u0434\u043e\u0432 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0435\u0434\u043e\u0432.
  • \u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u0432\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0435\u0434\u043e\u0432 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u043c\u0438 \u0442\u0440\u0435\u0434\u043e\u0432.
  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.
  • \u0418\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f MR.

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 MR.
  • \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 MR.
"},{"location":"features/notify/#status-mr","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 MR","text":"

\u041a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u0430\u0448\u0435\u0433\u043e MR \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435.

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 MR.
"},{"location":"features/notify/#new-thread","title":"\u041d\u043e\u0432\u044b\u0439 \u0442\u0440\u0435\u0434 \u0432 MR","text":"

\u0412 GitLab \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0430 \u0442\u0440\u0435\u0434\u044b. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0432\u0430\u0448\u0435\u043c MR, \u0442\u043e \u0432\u044b \u0441\u0440\u0430\u0437\u0443 \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u0437\u043d\u0430\u0435\u0442\u0435.

\u042d\u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u043d\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438:

  1. WITHOUT_NOTIFY \u2014 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0440\u0435\u0434\u0430\u043c \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c.
  2. NOTIFY_WITHOUT_CONTEXT \u2014 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0444\u0430\u043a\u0442\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0440\u0435\u0434\u0430, \u043d\u043e \u0431\u0435\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439.
  3. NOTIFY_WITHOUT_CONTEXT \u2014 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u0438\u043c\u0435\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439.
NOTIFY_WITH_CONTEXTNOTIFY_WITHOUT_CONTEXT

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR
  • \u041f\u0435\u0440\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0434\u0430 \u0441 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0442\u0440\u0435\u0434\u0430
  • \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0434\u0430, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f.

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u041e\u0442\u0432\u0435\u0442 \u0432 GitLab \u0438\u0437 Telegram.
  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0442\u0440\u0435\u0434.
  • \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0442\u0440\u0435\u0434\u0443. \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0440\u0435\u0434\u0430\u043c \u0432 \u044d\u0442\u043e MR \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c.
"},{"location":"features/notify/#new-thread-answer","title":"\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0442\u0440\u0435\u0434\u0435","text":"

\u0412\u0430\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0432 \u0442\u0440\u0435\u0434\u0430\u0445, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435.

\u042d\u0442\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u043d\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438:

  1. WITHOUT_NOTIFY \u2014 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0440\u0435\u0434\u0430\u043c \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c.
  2. NOTIFY_WITHOUT_CONTEXT \u2014 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0444\u0430\u043a\u0442\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0440\u0435\u0434\u0430, \u043d\u043e \u0431\u0435\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439.
  3. NOTIFY_WITHOUT_CONTEXT \u2014 \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u0438\u043c\u0435\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439.
NOTIFY_WITH_CONTEXTNOTIFY_WITHOUT_CONTEXT

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR
  • \u041f\u0435\u0440\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0434\u0430 \u0441 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0442\u0440\u0435\u0434\u0430
  • \u041f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0434\u0430
  • \u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0434\u0430

\u0422\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c/\u043f\u043e\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 Telegram.

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 MR

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u041e\u0442\u0432\u0435\u0442 \u0432 GitLab \u0438\u0437 Telegram.
  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0442\u0440\u0435\u0434.
  • \u2014 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0442\u0440\u0435\u0434\u0443. \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0440\u0435\u0434\u0430\u043c \u0432 \u044d\u0442\u043e MR \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c.
"},{"location":"features/notify/#mention-in-thread","title":"\u0423\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u0432 \u0442\u0440\u0435\u0434\u0435","text":"

\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043a\u0442\u043e-\u0442\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b \u0432\u0430\u0441 \u0432 MR \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GitLab (@GitlabLogin). \u0410\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0433\u043e MR \u043d\u0435 \u0432\u044b, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0432\u0430\u0441.

\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u044d\u0442\u043e\u0433\u043e MR, \u043d\u043e \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u0432\u044b \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0432\u0430\u0448\u0438\u043c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435\u043c.

\u0424\u043e\u0440\u043c\u0430\u0442 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u0430\u043a\u0438\u0435 \u0436\u0435, \u043a\u0430\u043a \u0443 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \"\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0442\u0440\u0435\u0434\u0435\".

"},{"location":"features/notify/#resolved-thread","title":"\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0440\u0435\u0448\u0435\u043d\u043d\u043e\u043c \u0442\u0440\u0435\u0434\u0435","text":"

\u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442 \u0440\u0435\u0448\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u043c\u0438 \u0442\u0440\u0435\u0434, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c.

"},{"location":"features/notify/#new-pipeline","title":"\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435","text":"

\u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043b\u0438 \u0443\u043f\u0430\u043b\u0430.

\u042f \u0431\u0443\u0434\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u0445?

\u041d\u0435\u0442. \u0412\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0442\u0435\u0445 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u0445, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0440, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 CI \u0440\u0443\u043a\u0430\u043c\u0438 \u0438\u0437 GitLab, \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 Merge \u0432 MR.

\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

  • \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441
  • \u041d\u043e\u043c\u0435\u0440 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430
  • \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f
  • \u0412\u0435\u0442\u043a\u0430, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c \u0441\u0431\u043e\u0440\u043a\u0430

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  • \u2014 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e. \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
  • \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430.
"},{"location":"getting-started/configuration/","title":"\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0431\u043e\u0442\u0430","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u043e\u0442\u0430-\u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0430. \u0411\u043e\u0442 \u0431\u044b\u043b \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u041f\u041a, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 24/4.

\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

  1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u043e\u0442\u0430 \u0432 Telegram
  2. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 GitLab
"},{"location":"getting-started/configuration/#env","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b","text":"

\u0412\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b:

  • TELEGRAM_BOT_TOKEN \u2014 \u0442\u043e\u043a\u0435\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u043e\u0442\u0430.
  • TELEGRAM_BOT_USERNAME \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0434\u0430\u043b\u0438 \u0431\u043e\u0442\u0443. \u041e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 bot.
  • GITLAB_PERSONAL_TOKEN \u2014 \u0442\u043e\u043a\u0435\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432 GitLab.
  • TELEGRAM_PERSON_ID \u2014 \u0432\u0430\u0448 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432 telegram, \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 \u0431\u043e\u0442\u0435 @myidbot.
  • GITLAB_URL \u2014 url \u043d\u0430 GitLab. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043b\u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439.
  • DATASOURCE_URL \u2014 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 Postgres, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435: jdbc:postgresql://databasehost:5432/gitlab_bot
  • DATASOURCE_USERNAME \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0411\u0414
  • DATASOURCE_PASSWORD \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u0411\u0414
"},{"location":"getting-started/configuration/#docker-compose","title":"\u0417\u0430\u043f\u0443\u0441\u043a Docker Compose","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430, - \u044d\u0442\u043e docker compose. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b docker-compose.yml \u0438 .env. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432 .env \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.

docker-compose.yml .env
version: '3.8'\nservices:\ngitlab-bot-database:\nimage: postgres:15.1-alpine\nrestart: always\nhostname: gitlab-bot-database\ncontainer_name: gitlab-bot-database\nnetworks:\ngitlab-bot:\nenvironment:\nPOSTGRES_DB: \"gitlab_bot\"\nPOSTGRES_USER: \"postgres\"\nPOSTGRES_PASSWORD: ${DATASOURCE_PASSWORD}\nvolumes:\n- gitlab-bot-database:/var/lib/postgresql/data/\ngitlab-bot:\nimage: upagge/gitlab-telegram-notify:latest\nhostname: gitlab-bot\ncontainer_name: gitlab-bot\nnetworks:\ngitlab-bot:\ndepends_on:\n- gitlab-bot-database\nenvironment:\nTELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}\nTELEGRAM_BOT_USERNAME: ${TELEGRAM_BOT_USERNAME}\nGITLAB_PERSONAL_TOKEN: ${GITLAB_PERSONAL_TOKEN}\nTELEGRAM_PERSON_ID: ${TELEGRAM_PERSON_ID}\nGITLAB_URL: ${GITLAB_URL}\nDATASOURCE_URL: \"jdbc:postgresql://gitlab-bot-database:5432/gitlab_bot\"\nDATASOURCE_USERNAME: ${DATASOURCE_USERNAME}\nDATASOURCE_PASSWORD: ${DATASOURCE_PASSWORD}\nvolumes:\ngitlab-bot-database:\nnetworks:\ngitlab-bot:\n
TELEGRAM_BOT_TOKEN=\nTELEGRAM_BOT_USERNAME=\nGITLAB_PERSONAL_TOKEN=\nTELEGRAM_PERSON_ID=\nGITLAB_URL=\nDATASOURCE_USERNAME=\nDATASOURCE_PASSWORD=\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u043f\u043e\u0437:

docker compose up -d\n
"},{"location":"getting-started/configuration/#docker","title":"\u0417\u0430\u043f\u0443\u0441\u043a Docker","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

docker run --name gitlab-notify  \\\n--env TELEGRAM_BOT_TOKEN=value \\\n--env TELEGRAM_BOT_USERNAME=value \\\n--env GITLAB_PERSONAL_TOKEN=value \\\n--env TELEGRAM_PERSON_ID=value \\\n--env GITLAB_URL=value \\\n--env DATASOURCE_URL=jdbc:postgresql://localhost:5432/gitlab_bot \\\n--env DATASOURCE_USERNAME=postgres \\\n--env DATASOURCE_PASSWORD=value \\\n--network=\"host\" upagge/gitlab-telegram-notify:latest\n
"},{"location":"getting-started/create-gitlab-token/","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 GitLab","text":"

\u0414\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 GitLab \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430.

\u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: https://gitlab.com/-/profile/personal_access_tokens

\u041a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 GitLab

\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 https://gitlab.com/ \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0441\u0432\u043e\u0435\u0433\u043e GitLab, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 self-host \u0440\u0435\u0448\u0435\u043d\u0438\u0435.

  • \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitLab Notify.
  • \u0412\u044b\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 - read_api

\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439

\u0412\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f api, \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u0430\u043a: \u043e\u0442\u0432\u0435\u0442 \u0432 \u0442\u0440\u0435\u0434\u0435

  • \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 Create personal access token.
  • \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d.
"},{"location":"getting-started/creating-telegram-bot/","title":"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0431\u043e\u0442\u0430 \u0432 Telegram","text":"

\u041f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0432\u044b\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u043e\u0442\u0430 \u0432 Telegram. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043e\u0442\u0430 @GodFather \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 /newbot.

\u0418\u043c\u044f \u0431\u043e\u0442\u0430

\u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u043f\u0443\u043d\u043a\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u0442\u0430. \u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c Telegram \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u043e\u0442\u0430.

\u041d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u043d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0431\u043e\u0442\u0443. \u041d\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u043e, \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0431\u043e\u0442\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u043b\u0438 \u0432\u0430\u0448\u0443 \u0444\u0430\u043c\u0438\u043b\u0438\u044e. \u041b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0438\u043c\u044f.

\u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430.

\u0412\u0438\u0434\u0435\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430:

"},{"location":"getting-started/first-start/","title":"\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"

\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0431\u043e\u0442\u0430. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.

\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u043e\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0437\u043d\u0430\u043b\u0438, \u0447\u0435\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c:

*[MR]: Merge Request *[\u0411\u0414]: \u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 *[Idea]: IDE IntelliJ IDEA"},{"location":"privacy/","title":"\u0417\u0430\u0449\u0438\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445","text":"

\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0432 GitLab \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c. \u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u0441 \u0441\u043c\u0443\u0449\u0430\u0442\u044c.

"},{"location":"privacy/#about-author","title":"\u041e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435 \u0431\u043e\u0442\u0430","text":"

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0442\u0440\u0443\u0447\u043a\u043e\u0432 \u041c\u0430\u0440\u043a, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0412 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0435\u0434\u0443 \u0431\u043b\u043e\u0433 \u0438 \"\u0431\u043b\u043e\u043a\u043d\u043e\u0442.\" \u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u043c\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044f \u043c\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 GitLab.

\u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u043c\u0438. \u0418 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u0443-\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f. \u0427\u0442\u043e-\u0442\u043e \u0441\u043c\u0443\u0449\u0430\u0435\u0442? \u041d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c. \u0412 \u044d\u0442\u043e\u043c \u0432\u0435\u0441\u044c Open Source.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u0434, \u043e\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0438 \u043d\u0435 \u0441\u043b\u043e\u0436\u0435\u043d. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c jar \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 Docker. \u041b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 Idea.

\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u044f \u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u044b\u0448\u043b\u044f\u043b \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0430\u043a\u043e\u0441\u0442\u044c, \u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043b \u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043e\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0430\u0442\u0430\u043a\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u0438 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

"},{"location":"privacy/#gitlab-token-protection","title":"\u0417\u0430\u0449\u0438\u0442\u0430 \u0442\u043e\u043a\u0435\u043d\u0430 GitLab","text":"

\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d GitLab. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435. \u041e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438 \u043d\u0438\u0433\u0434\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0442\u043e\u043a\u0435\u043d \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 Telegram, \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f, \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0432\u0430\u0441 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.

\u0422\u043e\u043a\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 GitLab, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u044b\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445 \u0441 GitLab \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.

\u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0442\u044b \u0443\u043a\u0440\u0430\u0434\u0435\u0448\u044c \u0442\u043e\u043a\u0435\u043d?

\u042f \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e, \u0447\u0442\u043e \u0432 \u043c\u043e\u0438 \u043f\u043b\u0430\u043d\u044b \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u042d\u0442\u043e open source, \u0434\u0435\u0442\u043a\u0430, \u0438\u0437\u0443\u0447\u0430\u0439\u0442\u0435 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0437\u043e\u0440\u044c\u0442\u0435 \u043c\u043e\u0435 \u0447\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u0442\u0435.

\u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u0441\u0435\u0431\u0435 \u0432\u043e\u043f\u0440\u043e\u0441: \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0442\u043e\u043a\u0435\u043d \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e self-host \u0433\u0438\u0442\u043b\u0430\u0431\u0430 \u0431\u0435\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 VPN.

"},{"location":"privacy/#privacy-levels","title":"\u0423\u0440\u043e\u0432\u043d\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438","text":"

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043d\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u0432 \u0442\u0440\u0435\u0434\u0430\u0445. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0430\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0443, \u0432\u0435\u0434\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0438\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0443\u0440\u043e\u0432\u043d\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439.

\u0412\u043e\u0437\u044c\u043c\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043d\u043e\u0432\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u0432 \u0442\u0440\u0435\u0434\u0435. \u041f\u0440\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c, \u0430 \u043f\u0440\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0444\u0430\u043a\u0442\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f, \u0431\u0435\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u0412\u0441\u0435 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435.

"},{"location":"privacy/#database","title":"\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u0411\u0414","text":"

\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 GitLab \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0411\u0414. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0411\u0414 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 MR \u043c\u0435\u0440\u0436\u0438\u0442\u0441\u044f, \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0411\u0414 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f.

\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435: \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445

"},{"location":"privacy/#access-control","title":"\u041d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f","text":"

\u0412\u0441\u0435 \u0431\u043e\u0442\u044b \u0432 Telegram \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0430\u0448 \u0431\u043e\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0439\u0434\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0438\u0441\u043a \u0432 Telegram. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.

\u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u043f\u0438\u0448\u0435\u0442 \u0432\u0430\u0448\u0435\u043c\u0443 \u0431\u043e\u0442\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u0412 \u0431\u043e\u0442\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0412\u043e\u0442 \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:

  1. \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0432\u0430\u0448 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432 Telegram. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043b\u043e\u0433\u0438\u043d\u0430, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c.
  2. \u041a\u043e\u0433\u0434\u0430 \u0431\u043e\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f
  3. \u0415\u0441\u043b\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0431\u043e\u0442 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443
  4. \u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0432\u0430\u0448 \u0431\u043e\u0442. \u0412\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043b\u043e\u0433\u0438\u043d \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 Telegram, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u043a\u0441\u0442 \u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0437\u043b\u043e\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043c\u0435\u0440\u044b.

\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u043d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435

\u0414\u043b\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u043e\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0435\u043c\u0443 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f.

"},{"location":"privacy/#hack-telegram","title":"\u0412\u0437\u043b\u043e\u043c Telegram","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 Telegram \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432\u0437\u043b\u043e\u043c\u0430\u044e\u0442, \u0442\u043e \u0432\u0437\u043b\u043e\u043c\u0449\u0438\u043a\u0443 \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0430 \u0441 \u0431\u043e\u0442\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438.

"},{"location":"support-development/","title":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443","text":"

\u0421\u043f\u043e\u043d\u0441\u043e\u0440\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u043e\u043a\u0443\u043f\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 - \u043e\u0447\u0435\u043d\u044c \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u043e\u0431\u0449\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443. \u0421\u0430\u043c\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 Open Source - \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f.

\u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u0442\u0430 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u043d\u043d\u0438\u043c \u0434\u043e\u043d\u0430\u0442\u0435\u0440\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043a\u0438\u0434\u043a\u0443 \u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:

  • \u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0430: https://www.tinkoff.ru/cf/4iU6NB3uzqx
  • \u041a\u0440\u0438\u043f\u0442\u0430:

    • BTC (Taproot): bc1pt49vnp43c4mktk6309zlq3020dzd0p89gc8d90zzn4sgjvck56xs0t86vy
    • ETH: 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
      • USDT (ERC-20): 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
      • DAI (ERC-20): 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
    • BNB: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
      • USD: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
      • DAI: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
"}]} \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/sitemap.xml b/gitlab-notification/ru/v.1.0.0/sitemap.xml new file mode 100644 index 0000000..0c79811 --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/sitemap.xml @@ -0,0 +1,63 @@ + + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/architecture/concept/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/changelog/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/features/interaction-bot/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/features/interaction-gitlab/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/features/notify/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/getting-started/configuration/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/getting-started/create-gitlab-token/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/getting-started/creating-telegram-bot/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/getting-started/first-start/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/privacy/ + 2023-03-05 + daily + + + https://docs.struchkov.dev/gitlab-notification/ru/v.1.0.0/support-development/ + 2023-03-05 + daily + + \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/sitemap.xml.gz b/gitlab-notification/ru/v.1.0.0/sitemap.xml.gz new file mode 100644 index 0000000..fa76592 Binary files /dev/null and b/gitlab-notification/ru/v.1.0.0/sitemap.xml.gz differ diff --git a/gitlab-notification/ru/v.1.0.0/stylesheets/extra.css b/gitlab-notification/ru/v.1.0.0/stylesheets/extra.css new file mode 100644 index 0000000..841f6aa --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/stylesheets/extra.css @@ -0,0 +1,77 @@ +.md-typeset .admonition, .md-typeset details { + font-size: 0.75rem; +} + +.md-typeset h1, .md-typeset h2 { + font-weight: 500; +} + +.md-typeset h2 { + margin-top: 4rem; +} + +.md-typeset h3 { + margin-top: 2.2rem; +} + +.md-typeset mark { + background-color: #fff3bc; + margin: -4px -4px -6px; + padding: 4px 4px 6px; +} + +@keyframes heart { + 0%, 40%, 80%, 100% { + transform: scale(1); + } + 20%, 60% { + transform: scale(1.15); + } +} +.heart { + animation: heart 1000ms infinite; +} + +@keyframes ninja-disappear { + 0% { + opacity: 1; + } + 50% { + opacity: 0.3; + } + 100% { + opacity: 1; + } +} + +.ninja-disappear { + animation: ninja-disappear 3000ms infinite; + animation-delay: 1500ms; +} + +@keyframes jingle-bell-swing { + 0% { + transform: rotate(0deg); + } + 50% { + transform: rotate(10deg); + } + 100% { + transform: rotate(0deg); + } +} + +.jingle-bell { + animation: jingle-bell-swing 2s ease-in-out infinite; + transform-origin: center; +} + + +@media(min-width: 768px) { + .frontpage-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + column-gap: 2em; + row-gap: 1em; + } +} \ No newline at end of file diff --git a/gitlab-notification/ru/v.1.0.0/support-development/index.html b/gitlab-notification/ru/v.1.0.0/support-development/index.html new file mode 100644 index 0000000..c822b0c --- /dev/null +++ b/gitlab-notification/ru/v.1.0.0/support-development/index.html @@ -0,0 +1,1031 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Поддержать разработку - GitLab Notification + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + + + +
+
+
+ + + + + + + +
+
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + + + +

❤ Поддержать разработку⚓︎

+

Спонсорская поддержка делает проект устойчивым, так как она окупает время сопровождающих этого проекта - очень дефицитный ресурс, который тратится на разработку новых функций, исправление ошибок, повышение стабильности, решение проблем и общую поддержку. Самое большое узкое место в Open Source - это время.

+

В будущем планируется появление платной версии бота с большим количеством дополнительного функционала. Возможно ранним донатерам сделаем скидку на подписку 😉

+
+

Вы можете выбрать любой удобный способ поддержки разработки:

+
    +
  • Банковская карта: https://www.tinkoff.ru/cf/4iU6NB3uzqx
  • +
  • +

    Крипта:

    +
      +
    • BTC (Taproot): bc1pt49vnp43c4mktk6309zlq3020dzd0p89gc8d90zzn4sgjvck56xs0t86vy
    • +
    • ETH: 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
        +
      • USDT (ERC-20): 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
      • +
      • DAI (ERC-20): 0x7668C802Bd71Be965671D4Bbb1AD90C7f7f32921
      • +
      +
    • +
    • BNB: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
        +
      • USD: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
      • +
      • DAI: 0xDa41aC95f606850f2E01ba775e521Cd385AA7D03
      • +
      +
    • +
    +
  • +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/gitlab-notification/ru/versions.json b/gitlab-notification/ru/versions.json index 8acd010..77778d8 100644 --- a/gitlab-notification/ru/versions.json +++ b/gitlab-notification/ru/versions.json @@ -1 +1 @@ -[{"version": "latest", "title": "latest", "aliases": []}, {"version": "develop", "title": "develop", "aliases": []}] \ No newline at end of file +[{"version": "v.1.0.0", "title": "v.1.0.0", "aliases": []}, {"version": "latest", "title": "latest", "aliases": []}, {"version": "develop", "title": "develop", "aliases": []}] \ No newline at end of file