Nell'ambito del progetto è stato sviluppato un bot per GitHub che gestisce compiti di auto-servizio obbligatorio per gli utenti del repository. Su GitHub puoi trovare repository la cui unica funzione è quella di coordinare le persone tramite il sistema Issue. In alcuni di questi, a chi lascia un Issue viene chiesto di compilare un modulo. Poi arriva un moderatore, verifica che il modulo sia compilato correttamente e aggiunge i tag in base a quelli indicati nel modulo (solo gli utenti privilegiati possono aggiungere tag, se non sono definiti nel modello). Un esempio di questa comunità è .
Il moderatore non interviene immediatamente. Pertanto, per la verifica dei moduli e l'esecuzione delle operazioni è stato presentato l'azione di GitHub. Il bot è scritto in Python, ma deve comunque essere eseguito tramite node.js, dal momento che GitHub ha solo 2 tipi di azioni: node.js e docker, e per docker prima si carica lo stesso contenitore in cui si trova node.js e poi si carica un altro contenitore, il che richiede tempo. Considerando che nel contenitore con node.js ci sono già python3 e tutto il necessario, è razionale semplicemente caricare le dipendenze, dato che non sono molte.
Caratteristiche:
- L'azione è gestita tramite un file di configurazione YAML e modelli Markdown;
- In ogni modello Markdown viene aggiunto un blocco che descrive le condizioni per una corretta compilazione del modulo e le azioni desiderate;
- Viene aggiunto un file di configurazione con impostazioni globali;
- I moduli sono composti da sezioni. Ci sono 2 tipi di sezioni:
- Testo libero. L'azione può verificare che l'utente si sia impegnato a riempirvi qualcosa. Il significato del testo non viene controllato automaticamente.
- Check (checkbox). Può essere richiesto di compilare n check, tali che 0 {= m1 {= n {= m2 {= numero totale di check nella sezione. L'azione verifica che i check corrispondano a quelli nel modello. Se i check sono stati impostati correttamente, l'azione può aggiungere tag all'issue, corrispondenti ai check.
- Se il modulo è stato compilato in modo errato, l'azione istruisce l'utente su come compilarlo correttamente e aggiunge un'etichetta speciale.
- Se il modulo non viene corretto entro un determinato periodo di tempo, l'azione può chiudere l'issue. Il ban automatico degli utenti, la rimozione e lo spostamento degli issue non sono ancora stati implementati a causa dell'assenza di un'API ufficiale per le azioni necessarie e di problemi di gestione dello stato.
- Se il problema è stato risolto, l'azione rimuove l'etichetta.
- I modelli di risposta alle azioni, ovviamente, sono configurabili.
Fonte: opennet.ru
