VSTS构建不会拾取dacpac文件(云中的托管代理)

Far*_*d J 3 sql deployment azure dacpac azure-devops

我正在尝试使用VSTS部署到我的数据库中,问题在于我需要获取dacpac文件并将其部署到Azure SQL服务器但其失败的步骤之一:在该步骤中,我正在使用" 执行Azure SQL:DacpacTask ",由Microsoft在VSTS中提供.有一个文件要做,它被称为" DACPAC文件 ",文档说使用它像这样:

$(agent.releaseDirectory)\ AdventureWorksLT.dacpac

但它给了我以下错误:

找不到使用搜索模式d:\ a\1\s\$(agent.releaseDirectory)\ AdventureWorksLT.dacpac部署的文件

所以我做了一个作弊并把以下值放在其中:

d:\一个\ 1\S\AdventureWorksLT.dacpac

它确实有效,但很明显,它不会永远工作,因为我需要使用环境变量,例如:

$(agent.releaseDirectory)\ AdventureWorksLT.dacpac

有什么建议吗?

Rob*_*gan 8

我有同样的问题.我无法找到详细的文档,但通过实验,这就是我发现的.

我假设你的DACPAC是作为Build Solution任务的一部分创建的.构建完成并创建DACPAC后,它存在于$(System.DefaultWorkingDirectory)目录的子文件夹中.

显然,Azure SQL数据库部署任务无法访问$(System.DefaultWorkingDirectory)文件夹.因此必须将文件复制到可以访问的位置.所以这就是我做的:

  1. Visual Studio Build任务构建解决方案,包括DACPAC.生成的DACPAC放在$(System.DefaultWorkingDirectory)子文件夹中.
  2. 添加"复制文件"任务作为下一步.Source Folder属性应为"$(System.DefaultWorkingDirectory)".Contents属性应为"**/YourDacPacFilename.dacpac".Target文件夹应为$(build.artifactstagingdirectory)."**/"告诉VSTS搜索所有子文件夹以查找匹配的文件.
  3. 添加Azure SQL数据库部署任务以部署实际的DACPAC.DACPAC文件将位于$(build.artifactstagingdirectory)中.

  • 很高兴它奏效了.顺便说一句,我发现将一个命令行任务添加到构建并使用dir命令找出构建管道放置文件的位置非常有用.您可以在日志中看到输出以确定发生了什么. (4认同)