我们希望使用TFS / Visual Studio Online托管的构建服务器来实现CI。要运行我们的单元/集成测试,构建服务器需要连接到SQL Azure DB。
我们在这里遇到了绊脚石,因为SQL Azure数据库使用IP地址白名单。
我的理解是托管构建代理是一个按需刷新的虚拟机,这几乎可以肯定意味着我们无法预先确定其IP地址,或者保证每个构建都是相同的剂。
那么我们如何让我们的托管构建代理运行连接到我们的IP地址白名单SQL DB的测试?是否可以以编程方式将IP添加到白名单,然后在测试结束时将其删除?
答案 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 code,VstsAzureRestHelpers_.psm1 source code。
答案 2 :(得分:0)
现在有一个“ Azure SQL InlineSqlTask”构建任务,您可以使用该任务自动在Azure服务器上设置防火墙规则。只需确保未选中“任务结束后删除规则”即可。只需添加一些虚拟查询,例如“选择顶部1 *从......”作为“内联SQL脚本”