如何从托管构建服务器连接到SQL Azure DB以运行测试

时间:2016-12-13 17:00:54

标签: azure continuous-integration integration-testing azure-sql-database azure-devops

我们希望使用TFS / Visual Studio Online托管的构建服务器来实现CI。要运行我们的单元/集成测试,构建服务器需要连接到SQL Azure DB。

我们在这里遇到了绊脚石,因为SQL Azure数据库使用IP地址白名单。

我的理解是托管构建代理是一个按需刷新的虚拟机,这几乎可以肯定意味着我们无法预先确定其IP地址,或者保证每个构建都是相同的剂。

那么我们如何让我们的托管构建代理运行连接到我们的IP地址白名单SQL DB的测试?是否可以以编程方式将IP添加到白名单,然后在测试结束时将其删除?

3 个答案:

答案 0 :(得分:1)

经过一番研究发现这个(样本使用PowerShell):

登录您的azure帐户

选择相关订阅

然后:

New-AzureRmSqlServerFirewallRule -EndIpAddress 1.0.0.1 -FirewallRuleName test1 -ResourceGroupName testrg-11 -ServerName mytestserver111 -StartIpAddress 1.0.0.0

删除它:

Remove-AzureRmSqlServerFirewallRule -FirewallRuleName test1 -ServerName mytestserver111 -ResourceGroupName testrg-11 -Force

在Powershell ISE for Windows中找到。或者,如果没有在Windows机器上运行,则应该使用跨平台cli类似的东西

答案 1 :(得分:0)

Azure PowerShell的任务/步骤可以调用azure powershell(例如New-AzureRmSqlServerFirewallRule)

另一方面,您可以通过REST API管理服务器级防火墙规则,因此您可以自定义构建/发布任务以获取所选Azure服务端点的必要信息(例如身份验证),然后发送REST API以添加新的或删除防火墙规则。

SqlAzureDacpacDeployment任务具有通过REST API添加防火墙规则的源代码,您可以参考。部分SqlAzureDacpacDeployment source codeVstsAzureRestHelpers_.psm1 source code

答案 2 :(得分:0)

现在有一个“ Azure SQL InlineSqlTask​​”构建任务,您可以使用该任务自动在Azure服务器上设置防火墙规则。只需确保未选中“任务结束后删除规则”即可。只需添加一些虚拟查询,例如“选择顶部1 *从......”作为“内联SQL脚本”