Aplicación GitHub para agregar o quitar etiquetas a problemas

La aplicación Github (o un bot de Github) es un actor de primera clase en Github que se utiliza para quitar el trabajo redundante de las manos del mantenedor del repositorio. Un actor de primera clase en Github significa que tiene la capacidad de hacer lo que el mantenedor quiere y ha programado el bot para que lo haga, con los permisos adecuados de antemano. El bot funciona al recibir webhooks de los eventos activados en Github (un comentario que le pide al bot que elimine a los asignados, agregue etiquetas, mueva el problema a otro repositorio) y luego active el código apropiado (el código tiene un estilo de evento, que debería ser evidente más adelante en el artículo) en respuesta a él. El código activado hace que el bot haga cosas. Uno de los trabajos que se pueden subcontratar al bot es administrar las etiquetas de los problemas. En este artículo, usaremos Probot para crear una aplicación de Github para agregar o quitar etiquetas a los problemas.
Marco utilizado: Probot
También usaremos el módulo npm probot-commands para ingresar el comando.

Configuración inicial de la aplicación GitHub

Para configurar la aplicación github, uno puede revisar la documentación del probot. Como la configuración no es el tema central de este artículo, vamos a remezclar una aplicación Probot en Glitch . El enlace para esta configuración se puede encontrar aquí .
El README.md en el remix de Glitch tiene una guía fantástica para configurar la aplicación.

Para verificar la configuración adecuada de la aplicación, ejecute el código predeterminado que se proporcionó con la instalación de la aplicación creando un problema en el repositorio (suponiendo que la aplicación esté instalada en el repositorio).
indexjs-first-code-snippet

Salida: El bot (aplicación GitHub) debe escribir un comentario como el siguiente.
proper-app-setup

Si este no es el resultado, significa que la aplicación no está instalada correctamente y se deben consultar los documentos aquí .

Una vez que se completa la configuración de la aplicación y se realizan las pruebas iniciales (para garantizar que la aplicación esté configurada correctamente y funcione), es hora de instalar los módulos npm que necesitaremos.

Instalar dependencias/módulos

Necesitaremos un módulo npm de comandos probot para que esta aplicación funcione. Para instalarlos, vaya al archivo ‘package.json’ desde el panel de navegación en el lado izquierdo. En la esquina superior izquierda del editor, busque un botón con la etiqueta ‘ Add Package‘. Usando este botón, agregue ‘ probot-commands‘ a la aplicación.
Después de agregar estos dos módulos, vaya al index.jsarchivo ‘ ‘ (usando el panel de navegación en el lado izquierdo) y agregue

const commands = require("probot-commands");

encima del archivo index.js, así:
probotcommands module added to indexjs

En este punto, deberíamos estar listos para desarrollar la lógica central para agregar o quitar las etiquetas a los problemas.
El código index.js está aquí .

Código (del archivo index.js del proyecto) :

Aquí, usaremos el módulo probot-commands para identificar los comandos de los comentarios del problema. Se pueden encontrar más detalles sobre cómo funciona el módulo de comandos en su repositorio de GitHub. Como breve introducción, la estructura de un ‘comando de barra’ es así:

/keywordToIdentifyCommand arg1 arg2 arg3

//In our app, we'll use the following command structure
/lm [add/remove], label1, label2, label3

command-syntax-structure

issuecomment created code for label addremove logic

Explicación:

Lógica:

  1. Escuchar el evento: se crea un nuevo comentario sobre el tema
  2. Si el contenido del comentario contiene un ‘comando de barra’ que comienza con /lm, ejecute el siguiente código.
  3. Divida los comandos en ‘, ‘ y asígnelos a una nueva var (labelvals, aquí). Por ejemplo, si el comando de barra inclinada es ‘lm add, bug, easy’, obtendremos una array [‘add’, ‘bug’, ‘easy’]
  4. Cortar la array obtenida para obtener los valores de las etiquetas en una array ‘etiquetas’, por ejemplo, [‘error’, ‘fácil’]
  5. Verifique el argumento ‘agregar’ o ‘eliminar’. Si ‘agrega’, entonces haga x, de lo contrario, si ‘elimina’, entonces haga y.
  6. Si es ‘agregar’, proporcione la array completa al método ‘addLabels’. De lo contrario, si ‘eliminar’, pase de forma iterativa los elementos ‘etiquetas’ al método ‘removeLabel’.
    Nota: En la sección de eliminación, como no existe ningún método para eliminar de forma masiva la lista de etiquetas, eliminamos iterativamente las etiquetas una a la vez.
  7. Si no se proporciona ni ‘agregar’ ni ‘eliminar’, cree un comentario para informar a las personas sobre un intento fallido.

El trabajo final es algo así, en acción:
final gh interface to demo command work

CONSEJO: No es prudente dejar que nadie (en términos del nivel de permiso del usuario) ejecute dichos comandos. Por lo tanto, es una buena idea encapsular el bloque de código en una verificación ‘si’ para verificar los niveles de permiso.

if ((context.payload.issue.author_association === "OWNER") || 
    (context.payload.issue.author_association === "COLLABORATOR")) 
{
    // commands... code block here
  
}

Publicación traducida automáticamente

Artículo escrito por Parikshit Hooda y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *