Azure Pipeline 将 DacPac 部署到 Azure SQL - 如何添加防火墙规则?

Azure Pipeline Deploy DacPac to Azure SQL - How to add firewall rule?

我有一个 Azure DevOps 发布管道,我正在尝试部署一个 SQL 数据库。

这是任务的 YAML:

steps:
- task: SqlAzureDacpacDeployment@1
  displayName: 'Azure SQL DacpacTask'
  inputs:
    azureSubscription: 'Dev/Test Connection'
    AuthenticationType: aadAuthenticationIntegrated
    ServerName: 'myserver.database.windows.net'
    DatabaseName: 'mydb'
    DacpacFile: '$(System.DefaultWorkingDirectory)/PATHTOMYFILE.Db.dacpac'
    DeleteFirewallRule: false

日志中的错误有些模糊:

[debug]The Azure SQL DACPAC task failed. SqlPackage.exe exited with code 1.Check out how to troubleshoot failures at...

然而,日志也这样说:

[debug]Processed: ##vso[task.logissue type=error]*** An unexpected failure occurred: One or more errors occurred.. [debug]No Firewall Rule was added

我知道必须为尝试访问 Azure SQL 的 IP 添加防火墙规则。我的理解是该任务将尝试根据正在使用的代理的 IP 地址为我创建防火墙例外。但日志显示“未添加防火墙规则”。您可能会注意到我设置了 DeleteFirewallRule: false。我不确定规则是否被创建然后被删除,此设置将使它们可供我检查。但同样,none 被创建了。

我无法在 Azure 门户中手动添加防火墙规则,因为每次运行发布管道时代理都会不同。有没有人知道如何解决这个问题?

这个任务的错误信息不是很清楚。在尝试了很多不同的方法来解决这个问题后,我开始尝试更改身份验证模式。

steps:
- task: SqlAzureDacpacDeployment@1
  displayName: 'Azure SQL DacpacTask'
  inputs:
    azureSubscription: 'Dev/Test Connection'
    ServerName: 'myserver.database.windows.net'
    DatabaseName: 'mydb'
    SqlUsername: '$(dbdeployuser)'
    SqlPassword: '$(dbdeploypassword)'
    DacpacFile: '$(System.DefaultWorkingDirectory)/PATHTOMYFILE.Db.dacpac'
    DeleteFirewallRule: false

一旦我这样做了,它就奏效了。所以根本不是防火墙的问题。