Issuer — GitHub-дзеянне для прымусовага самаабслугоўвання карыстальнікаў рэпазітара

У рамках праекта Эмітэнт падрыхтаваны бот для GitHub, які вырашае задачы па прымусовым самаабслугоўванні карыстальнікаў рэпазітара. На GitHub можна сустрэць рэпазітары, адзіная функцыя якіх - каардынацыя людзей праз сістэму Issue. У некаторых з іх які пакідае Issue прапануецца запоўніць форму. Потым прыходзіць мадэратар, правярае правільнасць запаўнення формы, і развешвае тэгі ў адпаведнасці з паказанымі ў форме (тэгі можа вешаць толькі прывілеяваны карыстач, калі яны не зададзены ў шаблоне). Прыклад такой супольнасці open-source-ideas/open-source-ideas.

Мадэратар прыходзіць не маментальна. Таму для праверкі формаў і выканання аперацый падрыхтавана прадстаўленае ў навіны GitHub-дзеянне. Бот напісаны на Python, але запускаць яго ўсё роўна даводзіцца праз node.js, бо ў GitHub усяго 2 тыпу дзеянняў – node.js і docker, прычым для docker спачатку грузіцца той жа кантэйнер, дзе і node.js, і ў яго грузіцца яшчэ адзін кантэйнер, што доўга. Улічваючы, што ў кантэйнеры з node.js python3 і ўсё астатняе патрэбнае і так ёсць, рацыянальна проста падгрузіць у яго залежнасці, балазе што яны невялікія.

Асаблівасці:

  • Дзеянне кіруецца з дапамогай YAML-канфіга і Markdown-шаблонаў;
  • У кожны Markdown-шаблон дадаецца блок, які апісвае ўмовы карэктнага запаўнення формы і жаданыя дзеянні;
  • Дадаецца файл канфігурацыі з глабальнымі настройкамі;
  • Формы складаюцца з секцый. Ёсць 2 тыпу секцый:
    • Свабодны тэкст. Дзеянне можа праверыць, што карыстач папрацаваў запоўніць туды што-небудзь. Асэнсаванасць тэксту аўтаматычна не правяраецца.
    • Сцягі (checkbox). Можна запатрабаваць запоўніць n сцяжкоў, такое што 0 {= m1 {= n {= m2 {= агульны лік сцяжкоў у секцыі. Дзеянне правярае, што сцяжкі адпавядаюць сцяжкам у шаблоне. Калі сцяжкі зададзены правільна, дзеянне можа павесіць на issue тэгі, соотв. сцяжкам.
  • Калі форма запоўнена няправільна, тое дзеянне інструктуе карыстача, як яе правільна запоўніць і вешае адмысловую пазнаку.
  • Калі форма не выпраўлена на працягу вызначанага часу, тое дзеянне можа зачыніць issue. Аўтаматычны бан карыстачоў, выдаленне і перасоўванне issue пакуль не рэалізавана ў сувязі з адсутнасцю афіцыйнага API для патрэбных дзеянняў і праблемамі з захоўваннем стану.
  • Калі праблема ўхіленая, тое дзеянне выдаляе пазнаку.
  • Шаблоны адказаў дзеянні, зразумела, наладжваюцца.

Крыніца: opennet.ru

Дадаць каментар