azure devops yaml 表达式字符串到版本

问题描述 投票:0回答:1

我想检查字符串是否是 azure devops 表达式中的版本。主要用于设置版本号。这是我的表情

- ${{ if tryparse(variables['Build.SourceBranchName'], True) }}:
  - name: myBuildNumber
    value: $[Build.SourceBranchName]
  
- ${{ else }}:
  - name: myBuildNumber
    value: $[format('0:yyyy\.MM\.dd', pipeline.startTime)]

azure devops 表达式文档声明我使用 C# 版本的 try parse,但没有真正描述如何在 yaml 表达式中使用它。我知道 C# 文档调用 out 参数,但我不确定如何在这种情况下调用或使用该函数。

azure-pipelines-yaml
1个回答
0
投票

Version.TryParse
”不是 Azure Pipelines 中的用户可用函数。它是管道的后端函数,用于将提供的字符串解析为版本号。

要检查字符串是否为版本号,可以尝试在脚本中使用

if
语句和正则表达式。

请参阅以下示例作为参考。

  • if语句“

    if('$(Build.SourceBranchName)' -match '^\d+(\.\d+){1,3}$')
    ”可以检查“
    Build.SourceBranchName
    ”变量的值是否为版本号格式字符串,该字符串最少包含2段,最多包含4段。

  • 记录命令“

    SetVariable
    ”用于更新“
    myBuildNumber
    ”变量的值。

variables:
- name: myBuildNumber
  value: $[ format('{0:yyyy\.MM\.dd}', pipeline.startTime) ]

steps:
- task: PowerShell@2
  displayName: 'Show myBuildNumber before update'
  inputs:
    pwsh: true
    targetType: inline
    script: |
      Write-Host "Build.SourceBranchName = $(Build.SourceBranchName)"
      Write-Host "myBuildNumber = $(myBuildNumber)"
    
- task: PowerShell@2
  displayName: 'Update myBuildNumber'
  inputs:
    pwsh: true
    targetType: inline
    script: |
      if('$(Build.SourceBranchName)' -match '^\d+(\.\d+){1,3}$') {
        Write-Host "##vso[task.setvariable variable=myBuildNumber;]$(Build.SourceBranchName)"
      }

- task: PowerShell@2
  displayName: 'Show myBuildNumber after update'
  inputs:
    pwsh: true
    targetType: inline
    script: |
      Write-Host "Build.SourceBranchName = $(Build.SourceBranchName)"
      Write-Host "myBuildNumber = $(myBuildNumber)"
© www.soinside.com 2019 - 2024. All rights reserved.