使用 GitVersion 生成版本号时 Azure DevOps 生成错误

问题描述

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

pred= model.predict(X_test)

-> dtype('float32')

for i,image in enumerate(pred,1):
    tf.keras.preprocessing.image.save_img(f'output_test/{i}.tif',image,scale=False)

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

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 任务,还是仅支持构建管道?

解决方法

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

UpdateBuildNumber”命令用于使用您为当前版本指定的新版本号覆盖自动生成的版本号。它仅适用于 CI 构建管道(经典和 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)"

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...