首页 > 解决方案 > 使用 GitVersion 生成版本号时 Azure DevOps 生成错误

问题描述

我正在开发 Azure DevOps 发布管道,并希望使用 GitVersion 为我的构建自动生成语义版本号;我已经在 CI 构建中毫无问题地实现了这一点,但是当我对发布管道执行相同操作时,我收到以下错误:

2021-03-31T06:33:24.9941116Z Executing GenerateSetVersionMessage for 'AzurePipelines'.
2021-03-31T06:33:24.9961020Z ##[error]Unable to process command '##vso[build.updatebuildnumber]0.1.0' successfully. Please reference documentation (http://go.microsoft.com/fwlink/?LinkId=817296)
2021-03-31T06:33:24.9979344Z ##[error]Value cannot be null. (Parameter 'buildId')
2021-03-31T06:33:25.0085671Z Executing GenerateBuildLogOutput for 'AzurePipelines'.

安装和运行 GitVersion 步骤的 YAML 是:

steps:
- task: gittools.gittools.setup-gitversion-task.gitversion/setup@0
  displayName: 'Set up assembly versioning'
  inputs:
    versionSpec: 5.3.6

- task: gittools.gittools.execute-gitversion-task.gitversion/execute@0
  displayName: 'Calculate version number'
  inputs:
    targetPath: '$(System.DefaultWorkingDirectory)/_MyRepo'
    useConfigFile: true
    configFilePath: '$(System.DefaultWorkingDirectory)/_MyRepo/GitVersion.yml'

发布管道支持 GitVersion 任务,还是只支持构建管道?

标签: azure-devopsazure-devops-pipelinesgitversion

解决方案


GitVersion是一个构建任务,它可能不适用于发布管道根据您分享的日志,GitVersion任务将执行“ UpdateBuildNumber ”命令。

UpdateBuildNumber ”命令用于用您为当前构建指定的新构建号覆盖自动生成的构建号。它仅适用于 CI 构建管道(Classic 和 YAML)。您不能在构建运行中使用此命令来更新另一个构建的构建号。而且它也不能用于发布管道。

##vso[build.updatebuildnumber]new-build-number

如果您想用您为当前版本指定的新名称覆盖自动生成的版本名称,您可以在发布管道中使用“ UpdateReleaseName ”命令。该命令的用法类似于“ UpdateBuildNumber ”。

##vso[release.updatereleasename]new-release-name

要查看更多详细信息,您可以查看“日志记录命令”。

[更新]

如果你只是想更新发布名称,为什么不直接在发布管道中使用“ UpdateReleaseName ”命令呢?

您应该在生成用作发布管道源的工件的构建管道中使用GitVersion任务。

在构建管道中执行GitVersion任务生成并更新新的构建号后,在使用构建工件作为源的发布管道中,您可以使用预定义的构建变量' $(Build.BuildNumber)'来获取构建号,并使用“ UpdateReleaseName ” " 命令使用内部版本号更新版本名称。

例如,您可以添加一个Bash 任务以在发布管道中执行以下命令。

echo "##vso[release.updatereleasename]$(Build.BuildNumber)"

这会将发布名称更新为与关联构建的内部版本号相同。


推荐阅读