Ícono del sitio Erick Daniel en la nube

Como obtener el último comentario de un Work Item de Azure DevOps con Logic Apps

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:

Enfoque de solución

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).

Project Settings Overview

Ya que nos encontramos en la definición de la plantilla de proceso, vamos a dar clic en el work item de tipo “Task”

Definición del Process template

Procedemos a agregar un campo de tipo “Text (Multiple Lines)”, lo nombramos “Last Comment” y damos clic en guardar.

Agregando un campo en la definción de la Tarea

Ya se encuentra listo en el work item de “Task”, lo podremos ver en el proyecto que tenemos asociado a esta plantilla.

Definición de la Work Item de tipo Tarea

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”.

Creación del grupo de recursos en Azure

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,

Creación del Log App

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”

Triggers del Logic App Designer

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”

Configuración del trigger en el Logic App Designer

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.

Project Settings — Service Hooks

Seleccionamos “Web Hooks”, y damos clic en “Next”.

Tipos de Service Hooks

Procedemos a seleccionar el trigger, para nuestro caso utilizaresmos “Work item commented on”, no aplicaremos algún filtro adicional, y damos clic en “Next”.

Configuración del trigger de Service Hook

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.

Definicion de la acción de Service Hook

Se envía una petición de prueba al servicio y le manda un payload dummy en el Request.

Pantalla de Test del Service Hook

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.

Request de prueba del Service Hook

Está listo, damos clic en el botón de “Finish” y podemos ver nuestra nueva suscripción a ese evento.

Suscripciones de Service Hook

Ahora vamos a crear un nuevo comentario a un “Task” en el proyecto, damos clic en guardar.

Creación de tarea y comentario

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ó.

Pantalla de suscripciones de Service Hook

Vamos a seleccionar el Request y copiamos su contenido.

Historico de la ejecución del Service Hook

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”

Definicion del esquema del trigger a traves de un payload de prueba

Ya tenemos el esquema y procedemos a crear el siguiente paso.

Configuración del Trigger “When a HTTP request is received”

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.

Configuracion de la acción “Send an HTTP Request to Azure DevOps”

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.

Resultados del output de la acción

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.

Configuración de la acción “Parse JSON”

Pegamos el contenido que copiamos anteriormente y damos clic en el botón de “Done”.

Payload JSON de ejemplo para generar el esquema.

Ya tenemos generado el esquema y tenemos todo para actualizar el campo de “Last Comment”

Configuración de la acción “Parse JSON”

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.

Configuración de la acción “Update a work item”

Procedemos a agregar u nuevo comentario, una vez hecho esto regresamos a las ejecuciones del logic app y vemos su ejecución.

Ejecución del Logic App

Visualizamos el campo de “Last Comment” y vemos que se actualizo correctamente.

Comentario en la tarea

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.

Query de work items tipo task

Especificamos que se muestre la columna de “Last Comment”

Opciones de columnas del Query

Ejecutamos nuestro Query y vemos el campo en las tareas que han sido comentadas.

Resultados del Query

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!

Salir de la versión móvil