将 tSQLt + SSDT 集成到 Jenkins 中

Integration of tSQLt + SSDT into Jenkins

我正在使用 SQL Server 2017 和 Visual Studio 2019 社区版。

我已经创建了我的第一个 SSDT 项目并在 Jenkins 中对其进行了配置,但在 运行我的 tSQLt 测试用例之前部署它时遇到了问题。

请参考我之前配置的link:

https://the.agilesql.club/2017/03/sql-server-continuous-deployment-in-a-box/#comment-4976546606

PS: 由于我使用的是 SSDT 和 Sql 服务器最新版本及更高版本 link 显示旧版本。

错误

我在 jenkins 中成功构建了我的 ssdt 项目,但是当它在“单元测试”步骤中尝试 运行“DeployDacpac.ps1”时,它显示管道 ste[=49 中的成功=] 但实际上脚本显示如下错误:

C:\Program Files (x86)\Jenkins\workspace\Test12_master>powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Program Files (x86)\Jenkins\workspace\Test12_master/Deploy/DeployDacpac.ps1" -projectPath "C:\Program Files (x86)\Jenkins\workspace\Test12_master" -dacpac "C:\Program Files (x86)\Jenkins\workspace\Test12_master/bin/Debug/DatabaseUT.dacpac" -publishProfile "C:\Program Files (x86)\Jenkins\workspace\Test12_master/DatabaseUT.publishprofile.xml"

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Data.Tools.Utilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
at Microsoft.Data.Tools.Schema.CommandLineTool.Program.Main(String[] args)

更新:现在将 sqlpackage.exe 的路径从我的本地文件夹更改为 visual studio...\SQLDB\DAC0\sqlpackage.exe" 部署工作正常。但它显示 tSQLt 单元测试步骤 运行 成功。它没有显示任何测试用例失败或通过的正确消息。

这是单元测试 运行 步骤的一些结束结果行:

"... 正在将软件包 'AgileSQLClub.tSQLtTestAdapter' 安装到 'C:\Program Files (x86)\Jenkins\workspace\Test17_master\Lib'。 缓存 https://api.nuget.org/v3/registration5-gz-semver2/agilesqlclub.tsqlttestadapter/index.json 包“AgileSQLClub.tSQLtTestAdapter.0.59.0”已经安装。 Microsoft (R) 测试执行命令行工具版本 16.6.0 版权所有 (c) Microsoft Corporation。版权所有。 开始测试执行,请稍候... 共有 158 个测试文件匹配指定的模式。"

它考虑了所有 sps,包括上面 158 中的 tSQLt sps。但没有结果提及是否有任何单元测试通过或失败。

请指导。

我没有使用 SSDT 项目,而是使用批处理命令通过 jenkins 运行 tsqlt 测试用例。即 sqlcmd。 所以没必要再挖了