【问题标题】:VSO Build vNext - get TFS revision numberVSO Build vNext - 获取 TFS 修订号
【发布时间】:2015-09-25 09:50:44
【问题描述】:

在我的构建步骤中,我需要提供 TFS 修订号作为参数。我知道有一个变量 $(Build.SourceVersion) 但它以“CS”前缀返回它,例如"CS1234"

有没有一种简单的方法可以删除“CS”前缀?有内置的字符串函数吗?

谢谢

【问题讨论】:

    标签: tfs tfsbuild azure-devops


    【解决方案1】:

    我不知道任何用于格式化该字符串的内置函数 - 您必须在脚本中的某个地方执行此操作。请注意,如果您在构建定义的 Build Number Format 字段中指定 $(Build.SourceVersion) 变量,它会返回空字符串。 This thread 可能会为您提供更多详细信息。

    【讨论】:

      【解决方案2】:

      没有内置方法。变更集号和修订号也不是一回事。如果您使用的是 GIT 存储库,您将在 $(Build.SourceVersion) 中获得 COMMIT ID

      您可以使用 PowerShell 剥离该部分。以下行应为您提供数字部分。

      [string]$version = ($Env:BUILD_SOURCEVERSION -replace'\D+(\d+)','$1')

      【讨论】:

        【解决方案3】:

        除了@cilerler 的回答,我使用这个通用的 Powershell 脚本作为我的第一个 VSTS 构建步骤:

        Param(
            [string] $SourceBranchName = $Env:BUILD_SOURCEBRANCHNAME,
            [string] $SourceVersion = $Env:BUILD_SOURCEVERSION
        )
        
        Write-Host "SourceBranchName = $SourceBranchName"
        Write-Host "SourceVersion = $SourceVersion"
        
        if ($SourceBranchName -eq "trunk"){
            $MajorMinor = "0.0"
        }
        else{
            $MajorMinor = $SourceBranchName
        }
        
        # Remove CS from changeset number
        $Revision = ($SourceVersion -replace 'C','')
        
        $BuildNumber = "$MajorMinor.$Revision.0"
        
        Write-Host "Setting Build Number '$BuildNumber'"
        
        Write-Host "##vso[build.updatebuildnumber]$BuildNumber"
        

        请注意,它假定您的分支名称格式为Major.Minor(例如1.4)或trunk

        另外,VSTS documentation 似乎是错误的,Build.SourceVersion 变量的格式为 C1226

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-24
          • 1970-01-01
          • 2018-02-03
          • 1970-01-01
          • 1970-01-01
          • 2016-05-21
          相关资源
          最近更新 更多