【问题标题】:How to use $(Rev:r) in VSTS build definition?如何在 VSTS 构建定义中使用 $(Rev:r)?
【发布时间】:2019-07-29 09:33:11
【问题描述】:

我要求我的构建通过私有构建代理生成 abc.msi 文件。现在我添加了 Powershell 任务以使用 abc_3.0.0$(Rev:r).msi 重命名 abc.msi 但 Powershell 任务是失败。请帮我解决这个问题。我想要构建名称格式,如 abc_3.0.0.1 ,abc_3.0.0.2,abc_3.0.0.3 ...等等。它应该不断增加随着构建的增加,$(Rev:r) 的价值。

我正在运行的 Powershell 命令是:

Rename-Item -Path "C:\Softwares\vsts-agent-win-x86-2.147.1\_work\1\s\src\abcSetup\Release\abc.msi" -NewName "C:\Softwares\vsts-agent-win-x86-2.147.1\_work\1\s\src\abcSetup\Release\abc_3.0.0.$(Rev:r).msi"

错误:

Rev:r :术语“Rev:r”未被识别为 cmdlet 的名称, 函数、脚本文件或可运行的程序。检查拼写 名称,或者如果包含路径,请验证路径是否正确并 再试一次。在 C:\Softwares\vsts-agent-win-x86-2.147.1_work_temp\fef4cc6a-e677-4a08-ab29-73c7c31da755.ps1:2 字符:243 + ... ork\1\s\src\abcSetup\Release\abc_3.0.0.$(Rev:r).msi" + ~~~~~ + CategoryInfo : ObjectNotFound: (Rev:r:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : CommandNotFoundException

[错误]PowerShell 以代码“1”退出。

[部分]完成:重命名 .MSI 文件

【问题讨论】:

  • 我认为它只适用于 build id,所以你可以使用 buildid 变量
  • @4c74356b41 你不能在 buildid 中使用它(因为你不能配置它,这是一个递增的整数)。您可能是指内部版本号(变量'build.buildnumber')
  • 也许吧,我不记得了,我不怎么用那两个
  • @PatrickLu-MSFT,感谢您的回复。当然我会在这里分享答案。解决方案:在构建定义中使用 abc_$(Build.BuildNumber).msi,在我使用 3.0.0.$(Rev:r) 的选项下。然后生成的构建版本是 abc_3.0.0.1.msi 和 abc_3.0.0.2.msi ......等等......这样我解决了这个问题。谢谢。

标签: azure-devops


【解决方案1】:

在 Azure DevOps 中,$(rev:.r) 是一种特殊的变量格式,仅适用于编辑器中的内部版本号字段

使用 $(Rev:.rr) 确保每个完成的构建都有一个唯一的名称。 构建完成后,如果构建号中没有其他内容 更改后,Rev 整数值加一。

来源:Specify general build definition settings

BUILD_BUILDNUMBER 是一个预定义变量。如果您使用此名称创建定义变量,则任何引用它的任务都将获得此变量的值,而不是系统定义的值。

如果您希望创建一个计数器变量,您可以使用 counter() 表达式来实现。 See this documentation for details。它以 yaml 为中心,但也可以在编辑器中使用。

【讨论】:

    【解决方案2】:

    $(Rev:r) 的值无法在任务中访问。只能访问它以定义 ex 的内部版本号:

    name: $(Build.SourceBranchName)-$(releaseVersion)$(Rev:.r)
    trigger:
     - main
    pool:
     vmImage: ubuntu-latest
    

    这里的 name 是用于在 Yaml 管道中定义内部版本号的变量。而releaseVersion是在Pipelines->Library中定义的自定义变量。 一旦我们设置了它,就可以在任务内部访问它,如下所示:

    - task: CmdLine@2
      inputs:
        script: >
          nuget pack ClassLibrary1/ClassLibrary1.csproj  
          -OutputDirectory $(Build.ArtifactStagingDirectory)
          -NonInteractive 
          -Properties Configuration=release
          -Version $(Build.BuildNumber)
          -Verbosity Detailed 
          -IncludeReferencedProjects
    

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多