【问题标题】:Azure DevOps generating error when using GitVersion to generate version number使用 GitVersion 生成版本号时 Azure DevOps 生成错误
【发布时间】:2021-06-27 04:20:16
【问题描述】:

我正在开发 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-devops azure-devops-pipelines gitversion


    【解决方案1】:

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

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

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

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

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

    要查看更多详细信息,您可以查看“Logging commands”。

    [更新]

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

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

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

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

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

    这会将版本名称更新为与相关版本的版本号相同。

    【讨论】:

    • 这听起来可行 - 正如我在原始问题中所说,GitVersion 构建任务在构建管道中运行良好,所以我知道 GitVersion 配置是有效的。我可以阻止 GitVersion 自动尝试更新内部版本号,而是让我通过日志记录命令更新版本名称吗?
    • 嗨@DavidKeaveny,我已经用更多细节更新了我的答案。请检查一下。
    • 谢谢,我会试一试,告诉你进展如何
    • 前进一步,后退两步。如果我使用构建管道中的发布工件,我可以在构建管道上设置版本号并将其传递给发布管道,但我可以' t 构建我的 Docker 映像,因为我没有源工件。如果我使用源人工制品,我可以构建 Docker 映像,但是没有构建号可以设置为我的发布号:(
    猜你喜欢
    • 1970-01-01
    • 2019-10-08
    • 2020-04-08
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2017-04-12
    • 2021-03-12
    • 2014-01-17
    相关资源
    最近更新 更多