Azure devops 亚梅尔文件中的问题

Azure devops 亚梅尔文件中的问题,azure-devops,yaml,azure-pipelines,azure-synapse,Azure Devops,Yaml,Azure Pipelines,Azure Synapse,我正在使用Azure DevOps构建和部署我的Azure Synapse 我有两个YAML文件。第一个很好,我需要分开构建和发布步骤。因此,我编写了第二个YAML文件。第二个YAML文件有以下错误: ##[error]No files were found to deploy with search pattern d:\a\1\s\SQL_ASynapse\bin\Release\SQL_ASynapse.dacpacCheck out how to troubleshoot failur

我正在使用Azure DevOps构建和部署我的
Azure Synapse

我有两个
YAML
文件。第一个很好,我需要分开构建和发布步骤。因此,我编写了第二个
YAML
文件。第二个
YAML
文件有以下错误:

##[error]No files were found to deploy with search pattern 
d:\a\1\s\SQL_ASynapse\bin\Release\SQL_ASynapse.dacpacCheck out how to troubleshoot failures at 
https://aka.ms/sqlazuredeployreadme#troubleshooting-
第一个运行良好的YAML文件:

trigger:
- master

pool:
    vmImage: 'windows-latest'

variables:
    solution: '**/*.sln'
    buildPlatform: 'Any CPU'
    buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
    inputs:
    restoreSolution: '$(solution)'

- task: AzureKeyVault@1
    inputs:
    azureSubscription: 'XXX'
    KeyVaultName: 'XXX-Dev'
    SecretsFilter: '*'

- task: VSBuild@1
    inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
    inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: SqlAzureDataWarehouseDacpacDeployment@1
    inputs:
    azureSubscription: 'XXX'
    AuthenticationType: 'server'
    ServerName: 'XXX'
    DataWarehouse: '$(SynapseName)'
    SqlUsername: '$(SynapseSQLUsername)'
    SqlPassword: '$(SynapseSQLPassword)'
    deployType: 'DacpacTask'
    DeploymentAction: 'Publish'
    DacpacFile: 'SQL_ASynapse\bin\Release\SQL_ASynapse.dacpac'
    IpDetectionMethod: 'AutoDetect'
出现错误的第二个YAML文件:

trigger:
- master

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  # Agent VM image name
  vmImageName: 'windows-latest'

stages:
- stage: Build
  displayName: Build stage

  jobs:
  - job: Build
    displayName: Build
    pool:  
      vmImage: $(vmImageName)

    steps:
    - task: NuGetToolInstaller@1

    - task: NuGetCommand@2
      inputs:
        restoreSolution: '$(solution)'

    - task: VSBuild@1
      inputs:
        solution: '$(solution)'
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'

    - task: VSTest@2
      inputs:
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'

- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()

  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: 'development'
    pool:
      vmImage: $(vmImageName)

    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureKeyVault@1
            inputs:
              azureSubscription: 'XXX-Dev'
              KeyVaultName: 'XXX-Dev'
              SecretsFilter: '*'

          - task: SqlAzureDataWarehouseDacpacDeployment@1
            inputs:
              azureSubscription: 'XXX-Dev'
              AuthenticationType: 'server'
              ServerName: 'XXX'
              DataWarehouse: '$(SynapseName)'
              SqlUsername: '$(SynapseSQLUsername)'
              SqlPassword: '$(SynapseSQLPassword)'
              deployType: 'DacpacTask'
              DeploymentAction: 'Publish'
              DacpacFile: 'SQL_ASynapse\bin\Release\SQL_ASynapse.dacpac'
              IpDetectionMethod: 'AutoDetect'
更新@Levi Lu MSFT答案的第1页

我更改了第二个脚本,如下代码所示:

...
- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
- publish: $(system.defaultworkingdirectory)\SQL_ASynapse\bin\Release ## path to a file or folder
  artifact: MyBuildOutputs
...

      - download: current  # refers to artifacts published by current pipeline
        artifact: MyBuildOutputs

      - task: SqlAzureDataWarehouseDacpacDeployment@1
        inputs:
          azureSubscription: 'xxx-Dev'
          AuthenticationType: 'server'
          ServerName: 'xxx.database.windows.net'
          DataWarehouse: '$(SynapseName)'
          SqlUsername: '$(SynapseSQLUsername)'
          SqlPassword: '$(SynapseSQLPassword)'
          deployType: 'DacpacTask'
          DeploymentAction: 'Publish'
          DacpacFile: 'SQL_ASynapse\bin\Release\SQL_ASynapse.dacpac'
          IpDetectionMethod: 'AutoDetect'
但我还是有同样的错误

上传任务结果

下载任务结果

SQLAzureDataWarehouseDacPac部署错误:

##[错误]未找到要使用搜索模式部署的文件 d:\a\1\s\SQL\u ASynapse\bin\Release\SQL\u ASynapse.dacpac查看如何
如果使用Microsoft hosted agent,请在

处排除故障。yaml管道中定义的每个作业都将在新的虚拟机上运行。虚拟机在使用一次后被丢弃

因此,来自构建阶段的构建作业的构建工件不存在于部署阶段的部署作业的代理计算机上。这就是为什么你会犯以上错误

您需要在生成作业中添加after-Vsbuild任务,以将生成结果发布到azure devops服务器。您应该指定要发布的正确路径(构建工件所在的位置)

- publish: $(system.defaultworkingdirectory)\SQL_ASynapse\bin\Release ## path to a file or folder
  artifact: MyBuildOutputs
然后在部署作业中添加一个before qlAzureDataWarehouseDacpacDeployment任务,以将生成结果下载到部署作业代理。以便构建结果可用于部署任务

- download: current  # refers to artifacts published by current pipeline
  artifact: MyBuildOutputs
要发布和下载生成工件,还可以使用

更新:

使用下载任务时:有关更多信息,请参阅

默认情况下,文件下载到
$(Pipeline.Workspace)/{artifact}
,其中artifact是工件的名称。工件的文件夹结构始终保持不变

您可以从上面更新的屏幕截图中看到。工件被下载到文件夹
D:\a\1\MyBuildOutputs

因此,您应该设置DacpacFile属性,如下所示:


DacpacFile:$(Pipeline.Workspace)/MyBuildOutputs/SQL_ASynapse.dacpac

通过单击错误链接“github.com/microsoft/azure pipelines tasks/blob/master/tasks/…”我收到以下消息:azure SQL数据库部署任务不支持BACPAC。请向我们发送有关此任务以及microsoft.com上RM_Customer_Queries对BACPAC和SQL脚本的支持的反馈。默认情况下,download task会将文件下载到
$(Pipeline.Workspace)/{artifact}
(您在上面更新的屏幕截图中看到
D:\a\1/MyBuildOutputs
)。因此,您需要将
DacpacFile
属性设置为
$(Pipeline.Workspace)/MyBuildOutputs/SQL\u ASynapse.dacpac
。我更新了上述答案。