지속적인 통합 프로세스에 데이터베이스를 어떻게 포함시킬 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1361010

  •  20-09-2019
  •  | 
  •  

문제

실례합니다. 오늘은 TeamCity를 사용하여 CI 환경을 설정하려는 첫날입니다. ASP.NET/SQL Server 앱을 개발 중이며 지금까지는 훌륭합니다. MSBuild는 내 공급자입니다.

통합 프로세스의 일부로 로컬 데이터베이스의 변경 사항을 테스트 서버에 자동으로 업로드 할 때 옵션이 무엇인지 알고 싶습니다. 이제 스키마 변경을 자동으로 동기화하기 위해 DBGHOST 방향으로 가고 싶지는 않습니다. 테스트 서버의 데이터베이스를 로컬 데이터베이스 사본으로 바꾸는 것이 기쁩니다.

여기 내 옵션은 무엇입니까?

편집 : 추가 조사에 따르면 Redgate SQL 제품은 이에 적합합니다. 그들은 저렴하지 않습니다. 그들은 지속적인 통합 프로세스 내에서 제품을 사용하는 데 좋은 백서를 가지고 있습니다. http://downloads.red-gate.com/helppdf/continuousIntegrationfordatabaseSusingredgatesqltools.pdf

도움이 되었습니까?

해결책

우선, 데이터베이스가 소스 제어 전략에 포함되어야한다고 생각합니다. 이것을 달성하기위한 기본 원칙은 아름답게 요약되었습니다. K. Scott Allen 시리즈. 당신은 또한 확인할 수 있습니다 Martin Fowler의 진화 데이터베이스 설계. 더 실용적인 정보를 보려면 답변을 확인하십시오. 소스 컨트롤에서 데이터베이스를 어떻게 구축해야합니까?.

내가 쓴대로 내 대답, 데이터베이스를 처음부터 구축 할 수있는 하나의 세트, 주어진 데이터베이스를 한 버전에서 마지막으로 업그레이드 할 수있는 두 가지 세트를 유지합니다. CI 전략의 일부로 :

  • CI 서버의 데이터베이스는 이러한 스크립트를 사용하여 처음부터 재건되어야합니다. 그런 다음 스크립트가 작동 상태인지 확인할 수 있습니다.
  • 완벽한 세상에서는 버전 N-1에서 데이터베이스 N 버전 N으로 업그레이드를 수행하고 얻은 스키마를 이전 데이터베이스의 스키마와 비교할 수 있어야합니다. 나는 아직도 그것에 대해 노력하고있다 ...
  • 테스트 데이터는 데이터베이스에 주입되어 응용 프로그램의 단위 테스트를 수행 할 수 있습니다 ( BCP를 사용하십시오 이것을 위해).
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top