Cómo ejecutar un contenedor acoplable para testings de integración de una aplicación Spring Boot dentro de VSTS

El problema es cómo ejecutar una image de la database Docker en VSTS y luego ejecutar una tarea Maven para empaquetar una aplicación Spring Boot.

El objective es poder realizar testings de integración con una database real que pueda destruirse después de que se haya completado la compilation.

PostgreSQL se está utilizando dentro del contenedor de la database, podría ser cualquier database. Crear una tarea Ejecutar Docker. Asegúrese de seleccionar Ejecutar en segundo plano

enter image description here

El siguiente paso es importante, VSTS no le permitirá conectarse al contenedor de la database en ejecución a través de localhost o 127.0.0.1. Utilice un script de shell para averiguar la IP del contenedor de la database en ejecución.

#!/usr/bin/env bash IP=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' database` echo "##vso[task.setvariable variable=SPRING_DATASOURCE_URL;]jdbc:postgresql://$IP:5432/myDatabase" 

Este script descubrirá la IP del contenedor y creará el URL de la fuente de datos basado en la IP.

enter image description here

Ejecute el package Maven como siempre, ahora puede probar contra una database, ejecutar liquibase / flyway, etc. … sin preocuparse por mantener una database externa para las testings de integración.

enter image description here

Asegúrese de quitar el contenedor Docker como parte de la limpieza de compilation.

Nuestro agente de desarrollo es una máquina basada en * nix. Creamos services y Postgres DB como imágenes acoplables y usamos tmpfs para las testings de integración.

Por favor, consulte el blog a continuación más detalles

https://vladmihalcea.com/2017/02/09/how-to-run-integration-tests-at-warp-speed-with-docker-and-tmpfs/