如何从托管生成服务器连接到 SQL Azure 数据库以进行 运行 测试
How to connect to a SQL Azure DB from a hosted build server for running tests
我们希望使用 TFS / Visual Studio 在线托管构建服务器来实现 CI。 运行 我们的 unit/integration 测试构建服务器需要连接到 SQL Azure 数据库。
我们在这里遇到了绊脚石,因为 SQL Azure 数据库使用 IP 地址白名单。
我的理解是托管构建代理是一个按需启动的 VM,这几乎肯定意味着我们无法事先确定其 IP 地址,或保证每次构建都相同代理.
那么我们如何让我们的托管构建代理 运行 测试连接到我们的 IP 地址白名单 SQL 数据库?是否可以通过编程方式将 IP 添加到白名单,然后在测试结束时将其删除?
经过少量研究发现(示例使用 PowerShell):
登录到您的天蓝色帐户
Select 相关订阅
然后:
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
在 windows 的 Powershell ISE 中找到。或者,如果 windows 机器
上没有 运行,应该有类似的使用跨平台 cli 的东西
有 Azure PowerShell 的 task/step 可以调用 azure powershell(例如 New-AzureRmSqlServerFirewallRule)
另一方面,您可以通过 REST API 管理服务器级防火墙规则,因此您可以自定义 build/release 任务以获取所选 Azure 服务端点的必要信息(例如身份验证),然后发送 REST API 添加新的或删除防火墙规则。
SqlAzureDacpacDeployment任务有通过REST添加防火墙规则的源代码API,您可以参考。第 SqlAzureDacpacDeployment source code, VstsAzureRestHelpers_.psm1 source code.
部分
现在有一个 "Azure SQL InlineSqlTask" 构建任务,您可以使用它在 Azure 服务器上自动设置防火墙规则。只需确保未选中 "Delete Rule After Task Ends"。只需添加一些虚拟查询,例如 "select top 1 * from...." as "Inline SQL Script"
我们希望使用 TFS / Visual Studio 在线托管构建服务器来实现 CI。 运行 我们的 unit/integration 测试构建服务器需要连接到 SQL Azure 数据库。
我们在这里遇到了绊脚石,因为 SQL Azure 数据库使用 IP 地址白名单。
我的理解是托管构建代理是一个按需启动的 VM,这几乎肯定意味着我们无法事先确定其 IP 地址,或保证每次构建都相同代理.
那么我们如何让我们的托管构建代理 运行 测试连接到我们的 IP 地址白名单 SQL 数据库?是否可以通过编程方式将 IP 添加到白名单,然后在测试结束时将其删除?
经过少量研究发现(示例使用 PowerShell):
登录到您的天蓝色帐户
Select 相关订阅
然后:
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
在 windows 的 Powershell ISE 中找到。或者,如果 windows 机器
上没有 运行,应该有类似的使用跨平台 cli 的东西有 Azure PowerShell 的 task/step 可以调用 azure powershell(例如 New-AzureRmSqlServerFirewallRule)
另一方面,您可以通过 REST API 管理服务器级防火墙规则,因此您可以自定义 build/release 任务以获取所选 Azure 服务端点的必要信息(例如身份验证),然后发送 REST API 添加新的或删除防火墙规则。
SqlAzureDacpacDeployment任务有通过REST添加防火墙规则的源代码API,您可以参考。第 SqlAzureDacpacDeployment source code, VstsAzureRestHelpers_.psm1 source code.
部分现在有一个 "Azure SQL InlineSqlTask" 构建任务,您可以使用它在 Azure 服务器上自动设置防火墙规则。只需确保未选中 "Delete Rule After Task Ends"。只需添加一些虚拟查询,例如 "select top 1 * from...." as "Inline SQL Script"