Azure devops 如何在Azure Devops构建管道中用连接的版本变量替换令牌

Azure devops 如何在Azure Devops构建管道中用连接的版本变量替换令牌,azure-devops,yaml,azure-pipelines,gitversion,Azure Devops,Yaml,Azure Pipelines,Gitversion,我的Azure DevOps构建管道使用GitVersion对构建构件进行版本控制。任务存在时,设置GitVersion变量,该变量允许访问GitVersion.MajorMinorPatch等。我想做的是将这个变量与BuildID连接起来。使用以下命令设置人工制品名称效果良好: name: $(GitVersion.MajorMinorPatch).$(BuildID) 在下一步中,我希望将该版本写入各种配置文件中。我安装了ReplaceToken插件,它用变量“Version”的内容替换特

我的Azure DevOps构建管道使用GitVersion对构建构件进行版本控制。任务存在时,设置GitVersion变量,该变量允许访问GitVersion.MajorMinorPatch等。我想做的是将这个变量与BuildID连接起来。使用以下命令设置人工制品名称效果良好:

name: $(GitVersion.MajorMinorPatch).$(BuildID)
在下一步中,我希望将该版本写入各种配置文件中。我安装了ReplaceToken插件,它用变量“Version”的内容替换特定的令牌(在我的例子中是#{Version})

创建一个名为Version、值为“$(GitVersion.MajorMinorPatch)。$(BuildID)”的变量,只需将该变量替换为字符串而不是计算值。我已经尝试在GitVersion任务之后运行的作业中设置变量,因此在创建变量时它应该已经存在

例如

“准备”作业当前正在运行GitVersion任务,因此它在其他作业期间存在


如何将连接的GitVersion/BuildId版本获取到配置文件中?

问题在于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
    
  • 将版本映射到从属作业中的变量:

    - job: 'Frontend'
      dependsOn: 'Preparation'
      variables:
        Version: $[ dependencies.Preparation.outputs['SetVersion.Version']]
    
  • 现在变量版本应该出现在作业中

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