Im Rahmen des Projekts Ein Bot wurde für GitHub vorbereitet, um Aufgaben zur erzwungenen Selbstbedienung von Repository-Nutzern zu lösen. Auf GitHub findet man Repositories, deren einzige Funktion die Koordination von Personen über das Issues-System ist. In einigen davon werden die Nutzer, die ein Issue hinterlassen, gebeten, ein Formular auszufüllen. Anschließend kommt ein Moderator, überprüft die Richtigkeit der ausgefüllten Formulare und hängt die Tags entsprechend den Angaben im Formular an (Tags dürfen nur von privilegierten Nutzern angehängt werden, wenn sie nicht im Template festgelegt sind). Ein Beispiel für eine solche Gemeinschaft ist .
Der Moderator kommt nicht sofort. Daher können die Überprüfung der Formulare und die Durchführung von Operationen etwas Zeit in Anspruch nehmen. Die in der GitHub-News vorgestellte Aktion. Der Bot ist in Python geschrieben, muss jedoch trotzdem über Node.js gestartet werden, da GitHub nur zwei Typen von Aktionen unterstützt – Node.js und Docker. Dabei wird zuerst der gleiche Container mit Node.js geladen, worin dann ein weiterer Container geladen wird, was zeitaufwendig ist. Da im Node.js-Container jedoch bereits Python3 und alle weiteren benötigten Tools vorhanden sind, ist es sinnvoll, einfach die Abhängigkeiten in diesen Container zu laden, da sie nicht groß sind.
Besonderheiten:
- Die Aktion wird über eine YAML-Konfiguration und Markdown-Vorlagen gesteuert;
- In jede Markdown-Vorlage wird ein Block eingefü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 zwei Arten von Abschnitten:
- Freier Text. Die Aktion kann überprüfen, ob der Benutzer sich die Mühe gemacht hat, dort etwas auszufüllen. Die Sinnhaftigkeit des Textes wird automatisch nicht überprüft.
- Checkboxen. Es kann verlangt werden, eine bestimmte Anzahl von Checkboxen auszufüllen, wobei 0 {= m1 {= n {= m2 {= die Gesamtanzahl der Checkboxen im Abschnitt ist. Die Aktion überprüft, ob die Checkboxen mit denen in der Vorlage übereinstimmen. Wenn die Checkboxen korrekt gesetzt sind, kann die Aktion entsprechende Tags an das Issue anhängen.
- Wenn das Formular falsch ausgefüllt ist, weist die Aktion den Benutzer an, wie es richtig ausgefüllt werden kann und setzt ein spezielles Etikett.
- Wenn das Formular innerhalb eines bestimmten Zeitraums nicht korrigiert wird, kann die Aktion das Issue schließen. Eine automatische Sperrung von Benutzern, sowie das Entfernen und Verschieben von Issues sind derzeit aufgrund des Fehlens einer offiziellen API für die erforderlichen Aktionen und Speicherprobleme nicht implementiert.
- Wenn das Problem behoben ist, entfernt die Aktion das Etikett.
- Die Antwortvorlagen der Aktion sind selbstverständlich anpassbar.
Quelle: opennet.ru
