我的Azure DevOps构建管道使用GitVersion对构建工件进行版本控制。使任务存在会设置GitVersion变量,该变量可访问GitVersion.MajorMinorPatch等。我想做的是将此变量与BuildID串联在一起。使用以下命令设置伪影名称很有效:
name: $(GitVersion.MajorMinorPatch).$(BuildID)
在下一步中,我希望将版本写入各种配置文件中。我安装了ReplaceToken插件,该插件将变量“ Version”的内容替换为特定令牌(在我的情况下为#{Version}#)。
创建一个名称为Version且值为“ $(GitVersion.MajorMinorPatch)。$(BuildID)”的变量,只需用字符串而不是评估值替换该变量即可。我已经尝试在GitVersion任务之后运行的作业中设置变量,因此在创建变量时应该已经存在该变量。
例如
- job: 'Frontend'
dependsOn: 'Preparation'
variables:
Version: $('GitVersion.MajorMinorPatch')
steps:
- bash: echo $(Version)
“准备”作业当前正在运行GitVersion任务,因此它在其他作业中也存在。
如何将串联的GitVersion / BuildId-Version放入配置文件?
答案 0 :(得分:2)
问题出在GitVersion变量的范围。我只能在执行任务的工作中访问它。
解决方案:
在Powershell脚本中连接版本(GitVersion.MajorMinorPatch + Build.BuildId),并将其导出到存在GitVersion的作业中。
- powershell: echo "##vso[task. variable=Version;isOutput=true]$env:VERSION.$env:BUILD_ID"
env:
VERSION: $(GitVersion.MajorMinorPatch)
BUILD_ID: $(Build.BuildId)
name: SetVersion
displayName: Set Version
将版本映射到Dependend作业中的变量:
- job: 'Frontend'
dependsOn: 'Preparation'
variables:
Version: $[ dependencies.Preparation.outputs['SetVersion.Version']]
现在变量版本应该出现在作业中