【发布时间】:2018-05-01 09:12:00
【问题描述】:
我正在尝试在 Visual Studio Online Build 代理上安装 SQL Server 2014 Express 实例,但它似乎卡住并在半小时后超时(我正在试用它并使用免费版本现在)。
我目前在构建开始时运行以下 powershell:
choco feature enable -n=allowGlobalConfirmation
choco install mssqlserver2014express --package-parameters='silentArgs:"/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=SQLEXPRESS /INSTANCENAME=SQLEXPRESS /UPDATEENABLED=FALSE /FEATURES=SQLENGINE"' -y
这可以在本地和 AppVeyor 中正常安装,但在 VSO Build 上会冻结。这是超时前的控制台日志:
Progress: 99% - Saving 311.7 MB of 311.73 MB
Progress: 100% - Completed download of C:\Users\VssAdministrator\AppData\Local\Temp\chocolatey\chocolatey\MsSqlServer2014Express\SQLEXPR.exe (311.73 MB).
Download of SQLEXPR.exe (311.73 MB) completed.
Hashes match.
C:\Users\VssAdministrator\AppData\Local\Temp\chocolatey\chocolatey\MsSqlServer2014Express\SQLEXPR.exe
Extracting...
Installing...
Installing MsSqlServer2014Express...
我很乐意听到不能直接解决安装问题的答案。例如,我发现建议 elsewhere 建议您不应该在构建代理上运行集成测试。但是,我不同意这个建议——我有 1000 个数据库测试只需要 5 分钟即可运行——如果这些测试失败,我宁愿让构建失败,而不是在构建管道中取得进展。此外,我不想模拟数据库 - 我使用的是 Dapper 而不是实体框架,并且想测试我的代码是否与数据库架构正确交互。
我还看到了一些建议,建议您设置自己的机器并预装 SQL 实例。我不想这样做,因为我们没有资源来设置和维护(应用安全补丁等)机器。我尝试使用 Azure SQL 服务器,它虽然易于维护,但创建新数据库需要很长时间。创建每个数据库似乎需要大约 2 分钟,每次测试运行会创建 20 个数据库。
更新 我已经在 AppVeyor 和 VSTS 上尝试过 microsoft/mssql-server-windows-express docker 镜像。 AppVeyor 在约 6 分钟内完成安装,但 VSTS 需要约 19 分钟。两者的下载都花了大约 4.5 分钟,所以我很乐意在 AppVeyor 中使用它进行缓存,但 19 分钟在 VSTS 中太长了。有谁知道如何诊断 VSTS 中的瓶颈?
docker pull microsoft/mssql-server-windows-express
docker run -d -p 1433:1433 -e sa_password=sgddsgbhidjsghuisg -e ACCEPT_EULA=Y microsoft/mssql-server-windows-express
【问题讨论】:
-
数据库测试是做什么的?它们是简单地验证实体和数据库之间的映射,还是更多地涉及单元测试存储过程?
-
他们的参与度更高——插入数据并将其读回,确保删除工作(使用级联规则)等。
-
您是否考虑过将集成测试容器化?那将是理想的,IMO。另一种选择:使用 Azure SQL 实例。在托管代理上安装 SQL Server 肯定行不通。
-
您介意详细说明一下吗? (也许是完整的答案?)我不确定我理解你的意思 - 我熟悉容器的概念,但从未真正使用过它们
-
@DanielMann 是否可以再次详细说明“肯定行不通”?它在 3 分钟内安装在 AppVeyor 机器上(除了开箱即用!)。我只是不知道在 VSTS 中运行时有什么不同
标签: sql-server build azure-pipelines