Azure yaml 管道:从任务 SqlAzureDacpacDeployment 获取部署 SQL 脚本

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

我们使用 SqlAzureDacpacDeployment 任务来部署对数据库的更改。但我们的 DBA 希望在部署自行执行之前批准部署脚本。

SqlAzureDacpacDeployment 任务显然可以生成脚本

- task: SqlAzureDacpacDeployment@1
  displayName: Task "Generate SQL Script"
  inputs:
    azureSubscription: ******
    AuthenticationType: servicePrincipal
    ServerName: ******
    DatabaseName: ******
    DeploymentAction: Script
    DacpacFile:  '****.dacpac'
    AdditionalArguments: '/p:ExcludeObjectTypes=Users;Logins;RoleMembership;Permissions /p:ScriptDatabaseOptions=false'

但脚本仅在管道完成后才可用,并且仅在日志中

enter image description here

SqlAzureDacpacDeployment 任务完成后是否可以获得脚本。例如将其保存到工件中?

azure-pipelines-yaml dacpac cicd
2个回答
0
投票

我对此不确定,但我会尝试将输出路径添加到AdditionalArguments,然后发布该工件。

- task: SqlAzureDacpacDeployment@1
  displayName: Task "Generate SQL Script"
  inputs:
    azureSubscription: ******
    AuthenticationType: servicePrincipal
    ServerName: ******
    DatabaseName: ******
    DeploymentAction: Script
    DacpacFile:  '****.dacpac'
    AdditionalArguments: '/p:ExcludeObjectTypes=Users;Logins;RoleMembership;Permissions /p:ScriptDatabaseOptions=false /OutputPath:"$(Build.ArtifactStagingDirectory)"'


0
投票

部署任务创建一个变量来保存部署脚本的路径。我使用与您类似的代码来构建脚本,但在我的例子中使用“name: ChangeScript”为其指定一个名称,以便我可以在后续步骤中引用它。 然后,我使用以下任务将脚本发布为工件。

- task: PublishBuildArtifacts@1
  displayName: Publish Change Script
  inputs:
    PathtoPublish: '$(ChangeScript.SqlDeploymentOutputFile)'
    ArtifactName: 'SQLDBChangeScript'
    publishLocation: 'Container'
© www.soinside.com 2019 - 2024. All rights reserved.