Seguimos abordando temas de automatización de gestión de trabajo en Azure DevOps Boards, en esta ocasión tenemos el siguiente escenario, de cierta forma requerimos obtener el ultimo comentario realizado en un ítem de trabajo (de tipo tarea) y asociarlo a un campo de mismo.
¿Cuál es el enfoque de solución?
Es el siguiente:
Vamos a mostrar su implementación.
Campo personalizado en plantilla de proceso
Para crear esto necesitamos modificar la plantilla de proceso que se está utilizando en nuestro proyecto, para que podamos agregar el campo de “Last Comment” en los work ítems de tipo “Task”; para esto nos vamos a las configuraciones de nuestro proyecto y en la sección de overview damos clic en la plantilla de proceso que está asociada.
Importante, si en tu caso usas una plantilla predefinida, puedes crear una heredada y personalizarla a tus necesidades (Puedes ver más acerca de cómo hacerlo en el siguiente articulo Como crear work items personalizados con process template en proyectos de Azure DevOps – Erick Daniel en la nube).
Ya que nos encontramos en la definición de la plantilla de proceso, vamos a dar clic en el work item de tipo “Task”
Procedemos a agregar un campo de tipo “Text (Multiple Lines)”, lo nombramos “Last Comment” y damos clic en guardar.
Ya se encuentra listo en el work item de “Task”, lo podremos ver en el proyecto que tenemos asociado a esta plantilla.
Creación de Logic App
Ahora necesitamos crear nuestro Logic App para poder realizar la actualización de nuestro work item al momento que sea comentado. Como primer paso requerimos un grupo de recursos, entonces vamos al portal de Azure y creamos un grupo de recursos; lo nombramos “updatelastcomment” y especificamos la región, en nuestro caso usaremos “South Central US”.
Ahora procedemos a crear el logic app dentro del grupo de recursos, lo nombraremos “la-updatelastcomment”, la región que escogimos es “South Central US, plan de consumo y lo creamos,
Una vez creado vamos a iniciar su configuración, lo que buscamos es recibir peticiones HTTP que nos envíe el webhook de Azure DevOps cada vez que se comente un ítem de trabajo; de tal forma que vamos a escoger un trigger ya existente que seria “When a HTTP request is received”
Necesitamos una URL para iniciar la configuración del Webhook, por lo que solo la obtendremos al momento de guardar nuestro flujo del Logic App. Damos clic en “Save”
Ahora que ya tenemos la URL de nuestro Logic App, vamos a dejar la configuración hasta aquí y continuaremos después.
Configuración del WebHook en Azure DevOps
Ahora vamos a configurar un Webhook para que podemos disparar nuestro Logic App cada vez que comentemos un work item de tipo Tarea. Para esto vamos a las configuraciones del proyecto -> Service Hooks -> Create subscription.
Seleccionamos “Web Hooks”, y damos clic en “Next”.
Procedemos a seleccionar el trigger, para nuestro caso utilizaresmos “Work item commented on”, no aplicaremos algún filtro adicional, y damos clic en “Next”.
Ahora especificamos la URL a la cual enviará el web hook todos los eventos, pegamos la URL de nuestro Logic App, borramos los parámetros de autenticación, especificamos que requerimos detalle mínimo de nuestro work item, y los enviamos como texto; damos clic en Test.
Se envía una petición de prueba al servicio y le manda un payload dummy en el Request.
En el tab de Request podemos ver el cuerpo de este, es importante porque más tarde usaremos esta información para obtener el id del work item en el que tenemos el comentario nuevo.
Está listo, damos clic en el botón de “Finish” y podemos ver nuestra nueva suscripción a ese evento.
Ahora vamos a crear un nuevo comentario a un “Task” en el proyecto, damos clic en guardar.
Vemos en la configuración de nuestro proyecto que se ejecutó de forma exitosa el webhook, damos clic en “history” para ver el detalle de la petición que se ejecutó.
Vamos a seleccionar el Request y copiamos su contenido.
Ahora que ya tenemos todo el mecanismo terminado, vamos a finalizar la configuración de nuestro Logic App.
Configuración de Logic App
Vamos al logic app, damos clic en Designer, y en el trigger seleccionamos “Use Sample payload to generate schema”, pegamos ahí la petición que copiamos previamente y damos clic en “Done”
Ya tenemos el esquema y procedemos a crear el siguiente paso.
Agregamos una nueva tarea de Azure DevOps, buscamos “Send an HTTP Request to Azure DevOps”, seleccionamos nuestra organización, especificamos el método HTTP que necesitamos (que es GET), y la URI relativa especifica lo siguiente:
{proyecto}/_apis/wit/workitems/{workitemid}/comments?top=1&api-version=6.0-preview.3
Esta invocación al api nos traerá el ultimo comentario de un work item en específico, que es justamente lo que necesitamos.
Creamos un nuevo comentario en la tarea que usamos anteriormente, regresamos al Logic App para validar que su ejecución, y copiamos el output del body del resultado.
Ahora que ya tenemos el resultado necesitamos obtener el comentario, por lo tanto procedemos a agregar la tarea de “Parse JSON”,le asociamos el campo de body de la tarea anterior y seleccionamos “Use Sample Payload” para generar nuestro esquema.
Pegamos el contenido que copiamos anteriormente y damos clic en el botón de “Done”.
Ya tenemos generado el esquema y tenemos todo para actualizar el campo de “Last Comment”
Agregamos la tarea “Update a work Item”, especificamos la organización, el id del work item que usamos anteriormente, en la sección de “Other Fields” agregamos el campo de “Last Comment” y especificamos de la tarea anterior el campo de “text” este es el que contiene el texto del último comentario realizado en el wort item. Guardamos nuestro Logic app.
Procedemos a agregar u nuevo comentario, una vez hecho esto regresamos a las ejecuciones del logic app y vemos su ejecución.
Visualizamos el campo de “Last Comment” y vemos que se actualizo correctamente.
Y al tener este campo ya actualizado, podemos acceder a esta información desde otros lugares como lo es un Query. Creamos un query, especificamos que el work item sea de tipo Task.
Especificamos que se muestre la columna de “Last Comment”
Ejecutamos nuestro Query y vemos el campo en las tareas que han sido comentadas.
Esto fue todo por hoy espero que te haya gustado este articulo y te sea de mucha utilidad, puedes ver más contenido que estaré generando en este medio.
¡Saludos y disfruta estar en la nube!