我正在使用SQL Server,SSDT,GIT和VSTS实现数据库持续集成过程,我也很新,所以这里有:
我已经可以在本地计算机上开发,使用“发布”和“架构比较”功能将Visual Studio数据库项目与本地数据库同步。
我还能够在每次“推送”操作中在VSTS中触发构建定义,这将构建然后触发向QA环境的发布。 现在我正在尝试在构建之后自动运行一些单元测试,但是当构建定义运行时,它无法在构建VM SQL Server实例(每次运行构建定义时创建的VM)中找到任何数据库......
所以我需要以某种方式应用我的数据库模式,因此它可以通过Build Definition中的“Visual Studio Test”任务运行自动化测试。 我想这应该是“发布”功能,或者我应该尝试使用PowerShell脚本部署.dacpac文件?
但我无法弄清楚如何在本文的“与构建测试集成”部分中配置步骤4“使用”数据库同步“任务”。
拜托,有没有人这样做过?
答案 0 :(得分:2)
/ t:构建;发布/p:SqlPublishProfilePath=your_publish_profile.xml
在您的publish_profile文件中,您必须指向VSTS内VM中的SQL Server实例。所以我保留了一个发布配置文件文件版本为开发人员指向我的VCS中的localhost,另一个分开的文件指向VSTS" (localdb)\ MSSQLLocalDB"。它与数据库的名称无关,因为它将创建一个具有您配置名称的新名称。
然后你只需要添加" Visual Studio Test"任务和Voila!
请注意有关测试的一件事:它将指向VSTS中的默认构建目录,它是变量$(Build.SourcesDirectory)中的一个
我看到有些人使用构建参数" / p:OutDir"获取.dacpac文件以便以后使用"复制文件"进入Artifacts文件夹的任务。
但如果你这样做,你必须改变" Visual Studio任务"目录也是,所以我建议只需指向"复制文件"任务源为$(Build.SourcesDirectory)。然后让#34; Visual Studio测试"具有默认值的任务,它将正常运行。
答案 1 :(得分:1)
您可以使用SQL Server单元测试(通过Visual Studio测试任务运行测试)来验证数据库,并且可以在测试之前部署数据库。有关详细信息,请参阅:Verifying Database Code by Using SQL Server Unit Tests。
另一方面,您可以使用Deploy SQL Dacpac Deployment group task或Azure SQL Database Deployment部署SQL Server数据库。