2

我的 Azure DevOps Build Pipeline 使用 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 放入配置文件中?

4

1 回答 1

3

问题在于 GitVersion 变量的范围。我只能在执行任务的作业中访问它。

解决方案:

  1. 在 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
    
  2. 将版本映射到依赖作业中的变量:

    - job: 'Frontend'
      dependsOn: 'Preparation'
      variables:
        Version: $[ dependencies.Preparation.outputs['SetVersion.Version']]
    

现在变量版本应该存在于作业中

于 2019-08-31T17:04:18.703 回答