sábado, 12 de diciembre de 2020

Service containers en Azure Pipelines, parte 2

Después de lo expuesto en la entrada anterior (enlace), continuamos profundizando en los Services Container de Azure DevOps Pipelines.

 

Veíamos como podíamos ejecutar en contenedor en el agente de Azure Pipelines para, por ejemplo, ejecutar un Redis del que hiciesen uso nuestros test de integración. Sin embargo, ¿y si quisiéramos esos test de integración contra diferentes versiones de Redis?

 

Matrix strategy + service container

 

Empecemos por definir varios container resources, uno por cada versión de Redis que queramos ejecutar, en nuestro caso las versiones 4, 5 y 6. 

 

 

Ahora la estrategia matrix de azure pipelines (si no sabes que es echa un ojo a este enlace y este otro) hará su magia, ejecutando un job para cada valor pasado como variable a la "matrix".

 

Definiremos también un servicio, que usando el valor de la variable que nos pasa la estrategia matrix, "apuntará" a uno de los contenedores. El resultado es que en cada job ejecutaremos lo mismo (tests de integración por ejemplo), pero contra una versión de Redis diferente.


 Y con esto, solo queda usar el servicio para "atacar" a cada versión de Redis, así queda el pipeline completo:

 

 

Cuando se ejecuta el pipeline, veremos que los 3 jobs generados ejecutan lo mismo (en el ejemplo que estamos haciendo lanzar un ping a Redis, que contestará con un PONG

 

 

 

 

Si queréis verme hacer este ejemplo en vivo, os dejo un video en mi canal de YouTube:

 

 

 

Espero que os haya resultado de interés. Gracias!

Recursos: 

Documentación oficial sobre la estrategia Matrix:

https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema#strategies

Documentación oficial sobre Service Containers: 

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/service-containers?view=azure-devops&tabs=yaml

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.