将测试结果发布到Azure(VS数据库项目、tSQLt、Azure管道、Docker)
我正在尝试使用Azure管道完全自动化数据库项目的构建、测试和发布 我已经有了一个VisualStudio解决方案,它由三个数据库项目组成。第一个项目是数据库,它包含表、存储过程、函数、数据等。。第二个项目是tSQLt框架(v1.0.5873.27393,如果有人感兴趣)。最后,第三个项目是tSQLt测试 我的目标是将解决方案签入源代码管理,管道将自动构建解决方案,将DACPAC部署到构建服务器(本例中为docker),运行tSQLt测试,并将结果发布回管道 我的管道是这样工作的将测试结果发布到Azure(VS数据库项目、tSQLt、Azure管道、Docker),azure,docker,tsql,azure-pipelines,tsqlt,Azure,Docker,Tsql,Azure Pipelines,Tsqlt,我正在尝试使用Azure管道完全自动化数据库项目的构建、测试和发布 我已经有了一个VisualStudio解决方案,它由三个数据库项目组成。第一个项目是数据库,它包含表、存储过程、函数、数据等。。第二个项目是tSQLt框架(v1.0.5873.27393,如果有人感兴趣)。最后,第三个项目是tSQLt测试 我的目标是将解决方案签入源代码管理,管道将自动构建解决方案,将DACPAC部署到构建服务器(本例中为docker),运行tSQLt测试,并将结果发布回管道 我的管道是这样工作的 构建Visu
- 构建VisualStudio解决方案
- 发布工件
- 设置运行Ubuntu和SQL Server的docker容器
- 安装SQLPackage
- 将DACPAC部署到SQL实例
- 运行tSQLt测试
- 公布测试结果
XML_F52E2B61-18A1-11d1-B105-00805F49916B
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<testsuites><testsuite id="1" name="MyNewTestClassOne" tests="1" errors="0" failures="0" timestamp="2021-02-01T10:40:31" time="0.000" hostname="f6a05d4a3932" package="tSQLt"><properties/><testcase classname="MyNewTestClassOne" name="TestNumberOne" time="0.
我已经研究了很多关于这方面的博客和文章,大多数人都在做同样的事情。有些人使用PowerShell而不是sqlcmd,但考虑到我使用的是Ubuntu机器,这里没有选择
我已经没有选择了,所以我想在这方面寻求一些帮助。您正在处理两个问题。结果集中存在噪声,即不是xml,并且xml结果在256个字符后被截断。这两件事我都能帮你 我现在做的基本上是:
/opt/mssql-tools/bin/sqlcmd \
-S "localhost, 31114" -U sa \
-P "password" \
-d dbname \
-y0 \
-Q "BEGIN TRY EXEC tSQLt.RunAll END TRY BEGIN CATCH END CATCH; EXEC tSQLt.XmlResultFormatter" \
| grep -w "<testsuites>" \
| tee "resultfile.xml"
/opt/mssql工具/bin/sqlcmd\
-S“本地主机,31114”-U sa\
-P“密码”\
-d数据库名\
-y0\
-Q“BEGIN-TRY-EXEC-tSQLt.RunAll-END-TRY-BEGIN-CATCH-END-CATCH;EXEC-tSQLt.XmlResultFormatter”\
|grep-w“\
|tee“resultfile.xml”
需要注意的几件事:
重要。这将xml结果集的长度从256设置为无限y0
- 带正则表达式的grep-确保您只获取xml,而不是它周围的噪音
如果只想运行测试的一个子集,则需要对传入的SQL查询进行修改,但除此之外,这是一个全面的“oneliner”,用于运行所有测试并以xml格式获取结果,Azure DevOps可读有关类似问题的解决方案,请参见-跨平台PowerShell是一个选项-您好BrokenBad Marco的回答有帮助吗?如果是这样,你可以,它可以帮助其他社区成员谁得到同样的问题,我们可以存档此线程,谢谢Stausend Dank!!不可能的
/opt/mssql-tools/bin/sqlcmd \
-S "localhost, 31114" -U sa \
-P "password" \
-d dbname \
-y0 \
-Q "BEGIN TRY EXEC tSQLt.RunAll END TRY BEGIN CATCH END CATCH; EXEC tSQLt.XmlResultFormatter" \
| grep -w "<testsuites>" \
| tee "resultfile.xml"