En el marco del proyecto Se ha preparado un bot para GitHub que soluciona tareas de autoservicio forzado para los usuarios del repositorio. En GitHub, se pueden encontrar repositorios cuya única función es coordinar a las personas a través del sistema de Issues. En algunos de ellos, se pide a los que dejan un Issue que completen un formulario. Luego, un moderador verifica la corrección del formulario y agrega etiquetas de acuerdo con las especificadas en el formulario (solo un usuario privilegiado puede agregar etiquetas si no están predefinidas en la plantilla). Un ejemplo de tal comunidad es .
El moderador no llega al instante. Por ello, para verificar los formularios y realizar operaciones se presenta en la noticia la acción de GitHub. El bot está escrito en Python, pero tiene que ejecutarse a través de node.js, ya que GitHub solo tiene 2 tipos de acciones: node.js y docker, y para docker primero se carga el mismo contenedor en el que se encuentra node.js, y dentro de él se carga otro contenedor, lo que toma tiempo. Dado que en el contenedor de node.js ya están python3 y todo lo necesario, es más racional simplemente cargar las dependencias, afortunadamente son pequeñas.
Características:
- La acción se gestiona mediante un archivo de configuración YAML y plantillas Markdown;
- En cada plantilla Markdown se añade un bloque que describe las condiciones para el correcto llenado del formulario y las acciones deseadas;
- Se agrega un archivo de configuración con ajustes globales;
- Los formularios consisten en secciones. Hay 2 tipos de secciones:
- Texto libre. La acción puede verificar que el usuario se ha tomado la molestia de llenar algo. El sentido del texto no se verifica automáticamente.
- Casillas de verificación (checkbox). Se puede requerir llenar n casillas, donde 0 {= m1 {= n {= m2 {= el número total de casillas en la sección. La acción verifica que las casillas correspondan a las de la plantilla. Si las casillas están correctas, la acción puede agregar etiquetas al issue correspondientes a las casillas.
- Si el formulario está mal completado, la acción instruye al usuario sobre cómo completarlo correctamente y agrega una etiqueta especial.
- Si el formulario no se corrige en un período de tiempo determinado, la acción puede cerrar el issue. La prohibición automática de usuarios, así como la eliminación y el movimiento de issues aún no se ha implementado debido a la falta de una API oficial para las acciones necesarias y problemas con el almacenamiento de estado.
- Si el problema se ha solucionado, la acción elimina la etiqueta.
- Los templates de respuestas para acciones, por supuesto, son configurables.
Fuente: opennet.ru
