通过 Azure DevOps Pipeline 构建和部署 DACPAC,无需 .sln(或任何工件)

问题描述 投票:0回答:1

我需要构建、发布和部署 .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 服务器的数据库。

这可能吗?你有例子吗?

azure-devops azure-pipelines azure-sql-database dacpac
1个回答
0
投票

根据讨论,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

Image ImageImage

© www.soinside.com 2019 - 2024. All rights reserved.