允许VSTS更新测试数据库

时间:2017-04-12 13:17:25

标签: azure-pipelines azure-pipelines-release-pipeline

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

1 个答案:

答案 0 :(得分:2)

您可以致电New-AzureRmSqlServerFirewallRuleRemove-AzureRmSqlServerFirewallRule powershell command来添加和删除防火墙规则。

在构建/发布期间,请参阅以下这些主题:Deploy Dacpac packages via power shell script to Azure SQL Server

  

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

     

1.编辑您的构建定义

     

2.选择“选项”选项卡,然后选中“允许脚本访问OAuth令牌”

     

3.添加Azure PowerShell步骤(参数:-RestAddress https://[account].vsdtl.visualstudio.com/DefaultCollection/_apis/vslabs/ipaddress   -Token $(System.AccessToken)-RG [resource group] -Server [server name] -ruleName $(Build.BuildNumber)

     

代码:

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)"  

更新

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

  1. 修改发布定义
  2. 单击“在代理上运行”
  3. 选中允许脚本访问OAuth令牌选项
  4. enter image description here