azure-devops - Azure DevOps SQL Dacpac 发布作业 - 提取构建变量

标签 azure-devops azure-sql-database azure-pipelines-release-pipeline

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

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

Visual Studio Project SQLCMD Variables

我将 sqlcmd 放入 Azure DevOps 版本的“附加 SQLPackage.ext 参数”中,用于提取这些参数:

/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

Results in logging table

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

最佳答案

Azure DevOps SQL Dacpac release job - extracting build variables

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

您可以检查 Classic release and artifacts variables 中的这些变量。变量 Build.TriggeredBy.DefinitionNameBuild.ReasonBuild.SourceVersionMessage 不在 Classic 版本和工件变量中,而是在 Use predefined variables 中。这就是您无法在发布管道中获取这些指定变量的原因。

(你在问题​​中提到了Build.SourceVersion,但是根据你提供的图片,你似乎写了错误的变量,它应该是Build.SourceVersionMessage)。

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

关于azure-devops - Azure DevOps SQL Dacpac 发布作业 - 提取构建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63480194/

相关文章:

azure - 如何跟踪迭代开始日期后已添加到冲刺中的 Azure 工作项?

sql - Azure SQL - 空间性能问题

azure-devops - 将工作项字段仅添加到 Azure DevOps 项目中的一个面板

visual-studio-2013 - 最近 VSO 更新后,将 Ranorex CodedUI 测试链接到 MTM/VSO 2013 CI 时出现问题

sql-server - 将本地数据库迁移到 sql azure 数据库时,它会忽略所有表创建脚本中的 DEFAULT (newid())

azure - 在 Azure 中使用异地复制时,如何在应用服务中设置配置字符串?

azure-devops - VSTS Microsoft 托管代理 : Virtual Machine size

linux - 将.net core 3.1 Web应用部署到Azure Linux应用服务

azure-devops - 如何通过VSTS CI管道为解决方案中的每个项目分别发布工件?

azure - 无法在 Azure DevOps 中构建角度项目