将 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。
所以没必要再挖了
我正在使用 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。 所以没必要再挖了