문제는 VSTS 내에서 Docker 데이터베이스 이미지를 실행 한 다음 Maven 태스크를 실행하여 스프링 부트 애플리케이션을 패키지하는 방법입니다.VSTS 내에서 스프링 부트 앱 통합 테스트 용 도커 컨테이너를 실행하는 방법
목표는 빌드가 완료된 후 파괴 될 수있는 실제 데이터베이스와의 통합 테스트를 수행하는 것입니다.
문제는 VSTS 내에서 Docker 데이터베이스 이미지를 실행 한 다음 Maven 태스크를 실행하여 스프링 부트 애플리케이션을 패키지하는 방법입니다.VSTS 내에서 스프링 부트 앱 통합 테스트 용 도커 컨테이너를 실행하는 방법
목표는 빌드가 완료된 후 파괴 될 수있는 실제 데이터베이스와의 통합 테스트를 수행하는 것입니다.
데이터베이스 컨테이너 내에서 PostgreSQL이 사용되고 있으며 모든 DB가 될 수 있습니다. 도커 실행 작업을 만듭니다. VSTS는 로컬 호스트 또는 127.0.0.1를 통해 실행중인 데이터베이스 컨테이너에 연결을 허용하지 않습니다, 확인이
다음 단계가 중요하다 배경에 실행을 선택합니다. 쉘 스크립트를 사용하여 실행중인 데이터베이스 컨테이너의 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을 만듭니다.
실행 메이븐 패키지는 평소와 같이, 지금은 통합 테스트를 위해 외부 데이터베이스 유지 관리에 대한 걱정없이 ... 데이터베이스, 실행 liquibase/이동 경로 등에 대해 테스트 할 수 있습니다.
하면 빌드 정리의 일환으로 도커 컨테이너를 제거해야합니다.
빌드 에이전트는 * nix 기반 시스템입니다. 우리는 docker 이미지로 서비스와 Postgres DB를 만들고 통합 테스트를 위해 tmpfs를 사용합니다.
아래의 블로그를 참조하시기 바랍니다 자세한 내용
https://vladmihalcea.com/how-to-run-integration-tests-at-warp-speed-with-docker-and-tmpfs/