CI/CD con Synthetic Monitoring de Datadog y Bitbucket pipelines
Tags: datadog, bitbucket, cicd, syntheticmonitoring
Published: 2022-12-17 04:31:17

En este artículo te mostraré como enlazar la herramienta Synthetic Monitoring de 
Datadog HQ
 con la herramienta Pipelines de 
Atlassian Bitbucket
 y tener un panel de control completo de pruebas CI/CD.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4h7fnbfsptucd7k2fry6.png)


DataDog Synthetic Monitoring
Esta herramienta permite automatizar pruebas en tus procesos de despliegue de aplicaciones ya sea en ambiente staging o producción.

En este ejemplo vamos a realizar una prueba básica a la página inicial de BoxMagic (https://go.boxmagic.app) mediante diferentes navegadores y dispositivos para que sean ejecutadas cada vez que se realiza un push en el repositorio del proyecto en Bitbucket.

Browser Test
Para comenzar ingresamos al panel de Datadog y seleccionamos el menú UX Monitoring / Synthetic Tests


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rztixbxiyjn6qr7l9kw3.png)


Creamos un nuevo test de tipo Browser Test



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/507d2s9m8v7fr1y178sh.png)


Agregamos la URL donde se ejecutará el Test, en este caso será https://go.boxmagic.app (nuestra url inicial), agregamos el nombre y el ambiente. Luego seleccionamos que navegadores y dispositivos serán los que realizarán las pruebas.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvzi7zwcs6wpqpoeu5us.png)


Se pueden agregar las ubicaciones desde donde se realizarán las pruebas.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7tvbn3y0us2a5fx80pys.png)


Por último configuramos la frecuencia en que se ejecutará esta prueba y además podemos configurar el monitoreo, alertas y permisos.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnykv2t6cg6wauaxj56o.png)


Pruebas
En este caso solo crearemos una prueba de Assertion / Test an element’s content que permite verificar el contenido de un elemento dentro de la página:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlk0q3epbmce8ym34uio.png)


Solo debes hacer click en el elemento y completar los datos del formulario, en este caso se está comprobando si el div contenga la frase “Ingresa aquí”.

Seleccionamos Apply para finalizar y comenzar a ejecutar la prueba.

Api Keys y test public ID
Para que esta prueba pueda correr cada vez que se ejecute el pipeline de bitbucket debemos obtener 3 variables Public Test ID, APP Key y API Key.

El Public Test ID se obtiene seleccionando la prueba que acabamos de realizar


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z84wy8xvpzx6e68b721l.png)


El APP Key y el API Key se obtienen dentro del menú Organization Settings donde debes crear un nuevo APP Key y un API Key.

NPM datadog-ci
Puedes ejecutar estas pruebas de forma local con npm para probar que estén correctamente configuradas.

Primero ejecutamos la instalación con npm

`npm install -g @datadog/datadog-ci`


Luego ejecutamos synthetics run-test con los parámetros que obtuvimos del paso anterior.

`datadog-ci synthetics run-tests --public-id        $DD_TEST_PUBLIC_ID  --apiKey $DD_API_KEY --appKey $DD_APP_KEY`


El resultado debería verse de esta forma si todas las pruebas se realizaron correctamente:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6trlwhg052ddbxbq1c5w.png)


Bitbucket Pipeline
Con todas las pruebas configuradas solo nos hace falta agregarlas al pipeline de bitbucket para que sean ejecutadas cada vez que se realice un push al repositorio

Agregamos las variables de entorno a nuestro repositorio en bitbucket en Repository Setting / Repository variables


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hs4czkxfu9nzcpdgqzac.png)



En el archivo bitbucket-pipeline.yml agregamos los comandos para ejecutar las pruebas.

```
pipelines:
     default:
           - step:
               name: datadog-synthetics testing
               image: node:15-alpine3.10
               script:
                 - npm install -g @datadog/datadog-ci
                 - datadog-ci synthetics run-tests --public-id        $DD_TEST_PUBLIC_ID  --apiKey $DD_API_KEY --appKey $DD_APP_KEY
```

Una vez que realizas un push al repositorio debes ingresar al del menú Pipelines de bitbucket podrás ver la ejecución de las pruebas.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o9du8wmxl5gdiy3mtjnx.png)


Puedes ver la realización de cada prueba en el panel de Datadog


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5brytrg1lu72d1r19h1.png)


También puedes ver la ejecución de las pruebas y en la columna RUN TYPE deberías poder observar que fueron ejecutadas por el pipeline de CI/CD


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x1ap6gbdcnz5e2kp0lb1.png)


Eso es todo, ya puedes comenzar a crear todo tipo de pruebas dentro de datadog, se ejecutarán automáticamente en tu CI/CD y de esta forma te aseguras que cada push que se realice al repositorio deba pasar todas las pruebas para que se pueda desplegar en ambientes de staging o producción.