Azure devops Azure DevOps SQL Dacpac发布作业-提取生成变量

Azure devops Azure DevOps SQL Dacpac发布作业-提取生成变量,azure-devops,azure-sql-database,azure-pipelines-release-pipeline,Azure Devops,Azure Sql Database,Azure Pipelines Release Pipeline,我有一个正在运行的CI/CD管道,它在Azure DevOps管道中发布了一个数据库(Visual Studio 2017+SSDT)。这个过程运行良好,但是我正在尝试将一些构建信息记录到数据库中 我创建了一个用于记录构建信息的日志记录表,并用作我想要记录的信息的参考。我已经在项目属性“SQLCMD variables”部分中设置了变量,以匹配我想要的变量(BuildID、Build.TriggeredBy.DefinitionName、Build.Reason、Build.SourceBran

我有一个正在运行的CI/CD管道,它在Azure DevOps管道中发布了一个数据库(Visual Studio 2017+SSDT)。这个过程运行良好,但是我正在尝试将一些构建信息记录到数据库中

我创建了一个用于记录构建信息的日志记录表,并用作我想要记录的信息的参考。我已经在项目属性“SQLCMD variables”部分中设置了变量,以匹配我想要的变量(BuildID、Build.TriggeredBy.DefinitionName、Build.Reason、Build.SourceBranch、Build.SourceVersion、Build.SourceMessage)

我在Azure DevOps发行版的“Additional SQLPackage.ext Arguments”中加入了sqlcmd,用于提取以下参数:

/v:BuildID=$(Build.BuildId) /v:BuildTriggeredBy=$(Build.TriggeredBy.DefinitionName) /v:BuildReason=$(Build.Reason) /v:BuildSourceBranch=$(Build.SourceBranch) /v:BuildSourceVersion=$(Build.SourceVersion) /v:BuildSourceMessage=$(Build.SourceVersionMessage)
我创建了一个部署后脚本,它将这些值记录到日志表中。理论上,每次发布成功时,都应记录构建信息:

INSERT INTO dbo.ReleaseLog ([BuildID],[TriggeredBy],[Reason],[SourceBranch],[SourceVersion],[SourceVersionMessage]) 
VALUES ('$(BuildID)','$(BuildTriggeredBy)','$(BuildReason)','$(BuildSourceBranch)','$(BuildSourceVersion)','$(BuildSourceMessage)')
其中一些很好用,但另一些根本不起作用。有效的是: BuildID、SourceBranch、SourceVersion

没有(并返回“$(VariableName)”)的有: Build.TriggeredBy.DefinitionName、Build.Reason、Build.SourceVersion

有人知道为什么吗?我已经检查了所有的变量,它们看起来都正常。我相信我包含的所有变量都应该在发布结束时可用。奇怪的是,有些变量可以工作,而另一些变量却不能。我已经进行了三次检查(在VS和发布管道之间复制并粘贴了变量名,再加上从MS站点复制了确切的名称),所以这看起来不像是代码问题。Azure DevOps bug

Azure DevOps SQL Dacpac发布作业-提取生成变量

这是因为您在发布管道中创建了部署后脚本,该脚本无法获取构建管道中的所有预定义变量

您可以在中检查这些变量。变量Build.TriggeredBy.DefinitionNameBuild.ReasonBuild.SourceVersionMessage不在经典版本中,而artifacts变量则在中。这就是您无法在发布管道中获取这些指定变量的原因

(您在问题中说了
Build.SourceVersion
,但根据您提供的图像,似乎您编写了错误的变量,它应该是
Build.SourceVersionMessage

要解决此问题,您可以尝试在构建管道中创建部署后脚本