允许 VSTS 更新测试数据库

2024-03-16

为了运行验收测试,我需要在 SQL Azure 上运行的数据库上定义一个已知的良好状态。我的测试在本地运行良好,并设置了连接字符串来更新 Azure PaaS 上的 SQL 实例。使用 VSTS 部署数据库后将运行测试。为了让部署过程运行我的验收测试,我需要运行 Visual Studio 团队系统测试的过程才能访问数据库。 VSTS 显然在美国东部 Azure 区域运行。鉴于我可能需要将数百个 IP 地址列入白名单,是否有更安全的方法来执行此操作,获取部署过程的 IP 地址,然后允许该 IP 地址访问数据库作为部署的一部分?


您可以通过调用添加和删除防火墙规则新-AzureRmSqlServerFirewallRule https://learn.microsoft.com/en-us/powershell/module/azurerm.sql/new-azurermsqlserverfirewallrule?view=azurermps-3.8.0 and 删除-AzureRmSqlServerFirewallRule powershell 命令 https://learn.microsoft.com/en-us/powershell/module/azurerm.sql/remove-azurermsqlserverfirewallrule?view=azurermps-3.8.0.

请参阅下面的这些线程在构建/发布期间执行此操作:通过 powershell 脚本将 Dacpac 包部署到 Azure SQL Server https://stackoverflow.com/questions/42499407/deploy-dacpac-packages-via-power-shell-script-to-azure-sql-server/42505323#42505323

首先,您需要添加防火墙规则才能连接到 Azure SQL 服务器。

1.编辑您的构建定义

2.选择选项选项卡并选中允许脚本访问 OAuth 令牌

3.添加Azure PowerShell步骤(参数:-RestAddresshttps://[帐户].vsdtl.visualstudio.com/DefaultCollection/_apis/vslabs/ipaddress https://%5Baccount%5D.vsdtl.visualstudio.com/DefaultCollection/_apis/vslabs/ipaddress-Token $(System.AccessToken) -RG [资源组] -Server [服务器名称] -ruleName $(Build.BuildNumber)

Code:

param (
    [string]$RestAddress,
    [string]$Token,
    [string]$RG,
    [string]$Server
    )
$basicAuth = ("{0}:{1}" -f 'test',$Token)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}
$result = Invoke-RestMethod -Uri $RestAddress -headers $headers -Method Get
Write-Host $result.value
New-AzureRmSqlServerFirewallRule -ResourceGroupName $RG -ServerName $Server -FirewallRuleName "UnitTestRule" -StartIpAddress "$($result.value)" -EndIpAddress "$($result.value)"  

Update:

允许脚本访问 OAuth 令牌以进行发布:

  1. 编辑发布定义
  2. 单击“在代理上运行”
  3. 选中允许脚本访问 OAuth 令牌选项
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许 VSTS 更新测试数据库 的相关文章

随机推荐