我需要构建、发布和部署 .dacpac 文件,以便数据库遵循代码中发生的更改。
我读了几篇文章,但它们都假设让 Visual Studio 生成 .sln 文件,然后从那里开始构建
- task: VSBuild@1
displayName: 'Build Solution: bla.sln'
inputs:
solution: database/bla.sln
platform: 'Any CPU'
configuration: Release
就我而言,
bla.sln
文件不存在,我不想创建一个(如果可能的话)
我使用的工具是:PyCharm、Azure DevOps 管道、Azure SQL 服务器、Azure SQL 数据库
最终目标:在我的存储库中拥有数据库即代码(模式、角色等),以及一个管道,当触发该管道时,将构建、发布 .dacpac 并将其部署到某些 SQL 服务器的数据库。
这可能吗?你有例子吗?
根据讨论,SQL 数据库项目中的
.sln
或 .sqlproj
文件不应被视为工件,而应作为 源代码 推送到您的云 Azure 存储库之一,以便它们可以由代理作业中运行的 VSBuild@1
管道任务构建。以SQL数据库项目为例,管道可以构建WideWorldImportersDW.sln
或
WideWorldImportersDW.sqlproj
来生成.dacpac
包,然后通过SqlAzureDacpacDeployment@1
管道任务将其部署到Azure SQL数据库。这是一个示例 YAML 管道供您参考。variables:
ARMSvcCnnName: YourAzureResourceManagerServiceConnectionName
AzureSQLServerName: YourAzureSQLSeverName
AzureSQLDBName: YourAzureSQLDBName
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
displayName: 'Build DACPAC from SQL Database Project'
inputs:
solution: '**\*.sqlproj'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: SqlAzureDacpacDeployment@1
displayName: 'Deploy Azure SQL DB'
inputs:
azureSubscription: '$(ARMSvcCnnName)'
AuthenticationType: 'servicePrincipal'
ServerName: '$(AzureSQLServerName).database.windows.net'
DatabaseName: '$(AzureSQLDBName)'
deployType: 'DacpacTask'
DeploymentAction: 'Publish'
DacpacFile: '**\*.dacpac'
AdditionalArguments: '/v:ETLUserPassword="$(sql-password)" /v:AppUserPassword="$(sql-password)"'
IpDetectionMethod: 'AutoDetect'
DeleteFirewallRule: false