Im Rahmen des Projekts Ein Bot wurde für GitHub vorbereitet, der die Aufgaben zur erzwungenen Selbstbedienung von Benutzern des Repositories löst. Auf GitHub gibt es Repositories, deren einzige Funktion darin besteht, Menschen über das Issue-System zu koordinieren. In einigen davon werden die, die ein Issue hinterlassen, gebeten, ein Formular auszufüllen. Dann kommt ein Moderator, überprüft die Richtigkeit der Formularfüllung und verteilt die Tags gemäß den Angaben im Formular (Tags können nur von einem privilegierten Benutzer vergeben werden, wenn sie nicht im Template angegeben sind). Ein Beispiel für eine solche Gemeinschaft ist .
Der Moderator kommt nicht sofort. Daher erfolgt die Überprüfung der Formulare und die Durchführung von Operationen durch die in der Nachricht vorgestellte GitHub-Action. Der Bot ist in Python geschrieben, muss jedoch trotzdem über node.js gestartet werden, da es bei GitHub nur 2 Arten von Actions gibt – node.js und docker, wobei für docker zuerst derselbe Container geladen wird, in dem sich node.js befindet, und in ihn wird ein weiterer Container geladen, was lange dauert. Angesichts der Tatsache, dass im Container mit node.js python3 und alles andere Wichtige bereits vorhanden sind, ist es sinnvoll, einfach die Abhängigkeiten zu laden, zum Glück sind sie klein.
Merkmale:
- Die Action wird mit Hilfe einer YAML-Konfiguration und Markdown-Vorlagen gesteuert;
- In jede Markdown-Vorlage wird ein Block hinzugefügt, der die Bedingungen für das korrekte Ausfüllen des Formulars und die gewünschten Aktionen beschreibt;
- Eine Konfigurationsdatei mit globalen Einstellungen wird hinzugefügt;
- Die Formulare bestehen aus Abschnitten. Es gibt 2 Arten von Abschnitten:
- Freitext. Die Action kann überprüfen, ob der Benutzer sich die Mühe gemacht hat, dort etwas auszufüllen. Die Sinnhaftigkeit des Textes wird nicht automatisch überprüft.
- Checkboxen. Es kann verlangt werden, dass n Checkboxen ausgefüllt werden, so dass 0 {= m1 {= n {= m2 {= die Gesamtzahl der Checkboxen im Abschnitt. Die Action prüft, ob die Checkboxen mit den Checkboxen im Template übereinstimmen. Wenn die Checkboxen richtig eingestellt sind, kann die Action Tags an das Issue hängen, die den Checkboxen entsprechen.
- Wenn das Formular falsch ausgefüllt ist, weist die Action den Benutzer an, wie es richtig ausgefüllt wird, und hängt ein spezielles Label an.
- Wenn das Formular innerhalb eines bestimmten Zeitraums nicht korrigiert wird, kann die Aktion das Issue schließen. Ein automatisches Sperren von Benutzern sowie das Löschen und Verschieben von Issues sind derzeit nicht umgesetzt, da es keine offizielle API für die erforderlichen Aktionen gibt und es Probleme mit dem Zustandsspeicher gibt.
- Wenn das Problem behoben ist, entfernt die Aktion das Tag.
- Die Antwortvorlagen für Aktionen lassen sich selbstverständlich anpassen.
Quelle: opennet.ru
