Azure Pipeline Deploy DacPa c to Azure SQL - Как добавить правило брандмауэра? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть 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] Azure SQL DACPA C задача не выполнена. SqlPackage.exe завершен с кодом 1.Проверьте, как устранять неполадки при ...

Однако в журнале также говорится следующее:

[debug] Обработано: ## vso [task.logissue type = error] *** Произошла непредвиденная ошибка: произошла одна или несколько ошибок .. [debug] Правило брандмауэра не было добавлено

Я знаю, что правило брандмауэра необходимо добавить для IP-адресов, пытающихся получить доступ Azure SQL. Насколько я понимаю, задача будет пытаться создать для меня исключение брандмауэра на основе IP-адреса используемого агента. Но в журнале говорится, что «правило брандмауэра не было добавлено». Вы можете заметить, что я установил DeleteFirewallRule: false. Я не был уверен, были ли правила созданы и затем удалены, этот параметр оставил бы их для меня, чтобы проверить. Но, опять же, ни один из них не был создан.

Я не могу добавить правило брандмауэра вручную на портале Azure, потому что агент будет отличаться при каждом запуске конвейера выпуска. У кого-нибудь есть идеи, как решить эту проблему?

Спасибо, Энди

1 Ответ

0 голосов
/ 25 февраля 2020

Там сообщения об ошибках для этой задачи не очень ясны вообще. Попробовав несколько разных способов решить эту проблему, я попытался изменить режим аутентификации.

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

Как только я это сделал, все заработало. Так что проблема вовсе не в брандмауэре.

...