azure-devops - 使用 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 任务,还是只支持构建管道?
解决方案
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)"
这会将发布名称更新为与关联构建的内部版本号相同。
推荐阅读
- python - 在熊猫中创建具有 0,1,0.5 值而不是布尔值的列
- excel - 如何插入到 ListView 框的中间
- java - @Post Jersey 在带有 javax.ws.rs.POST 注释的方法中只允许有一个未注释的参数
- bash - 如何在一行 Bash 命令中发送多个 mailx 命令(例如读取/打印和删除)
- corda - 在 Corda 流中,java.lang.IllegalStateException: Attempted to initialFlow() 在同一个 InitiatingFlow 中两次
- maven - docker-maven-plugin(spotify) 构建多个模块
- python - Gurobi Python:不支持的类型(
) 对于 LinExpr 添加参数错误 - java - 在 Tomcat 服务器重新启动之前,无法可靠地从数据库加载数据
- r - 在外部 LaTeX 文件中将 YAML 参数作为宏访问
- javascript - axios POST请求后更新状态