问题是如何在VSTS中运行Docker数据库映像,然后运行Maven任务来打包Spring Boot应用程序。
目标是能够使用可在构建完成后销毁的真实数据库执行集成测试。
答案 0 :(得分:0)
PostgreSQL正在数据库容器中使用,可以是任何数据库。创建Docker Run任务。请务必选择在后台运行
下一步很重要,VSTS不允许您通过localhost或127.0.0.1连接到正在运行的数据库容器。使用shell脚本查找正在运行的数据库容器的IP。
#!/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"
此脚本将找出容器的IP并根据IP创建数据源URL。
像往常一样运行Maven包,现在你可以对数据库进行测试,运行liquibase / flyway等...而不用担心维护外部数据库进行集成测试。
确保在构建清理过程中删除Docker容器。
答案 1 :(得分:0)
我们的构建代理是基于* nix的机器。我们创建服务和Postgres DB作为docker镜像,并使用tmpfs进行集成测试。
请参阅以下博客更多详情
https://vladmihalcea.com/how-to-run-integration-tests-at-warp-speed-with-docker-and-tmpfs/