带有$(GitVersion.NuGetVersion)的标签源使用变量名称而不是值创建标记

时间:2016-12-07 19:52:13

标签: git azure-devops tfsbuild azure-pipelines gitversion

成功构建后,将标签格式配置为$(GitVersion.NuGetVersion),结果标记设置为$(GitVersion.NuGetVersion),而不是该变量的实际扩展值。

在构建输出日志记录中,有2个部分/计划:Build和Finalize Build。

据推测,一旦构建代理移动到第二部分/计划,所有变量上下文/状态都将丢失。

如果在Finalize Build部分中GitVersion变量的上下文丢失,我应该如何使用生成的GitVersion标记源?

https://github.com/Microsoft/vsts-agent/issues/716

2 个答案:

答案 0 :(得分:2)

我在issue on GitHub

中回答了您的问题
  

我认为只要VSTS没有提供适当的API,我们就可以在GitVersion任务中做任何事情。 GitVersion目前只使用##vso[task.setvariable]value command定义变量。变量在任务上下文中明确定义,因此可用于后续任务,但不在上下文之外。

     

特殊情况是我们正在使用的特殊命令##vso[build.updatebuildnumber]build number的内部版本号。

     

解决方法可以是添加一个添加标记的附加任务,该任务将起作用,因为任务将位于相同的上下文中,因此可以访问该变量。

答案 1 :(得分:0)

实现我想要的结果的具体步骤:

  1. 设置VSTS项目/存储库/构建预先要求:
    https://www.visualstudio.com/en-us/docs/build/scripts/git-commands#enable-scripts-to-run-git-commands
  2. 用于标记的Git文档(完整性):
    https://git-scm.com/book/en/v2/Git-Basics-Tagging
  3. 我使用工具 git添加了2个命令行任务(批处理任务会更好):

    1. 参数: tag -a $(GitVersion_NuGetVersion) -m "Auto-Tagged v$(GitVersion_NuGetVersion) by Build ($(Build.BuildId))"
    2. 参数: push origin $(Build.BuildNumber)