微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure DevOps 版本控制管道

如何解决Azure DevOps 版本控制管道

以下管道用于标记版本:

trigger:
  - main

pool: Default

variables:
  version.MajorMinor: '1.0' 
  version.HotFix: '0.0.1'
  version.Revision: $[counter(variables['version.MajorMinor'],0)]
  version.HotfixInc: $[counter(variables['version.HotFix'])]
  stabLeversionNumber: '$(version.MajorMinor).$(version.Revision)'
  minorVersionNumber: 
  hotFixVersionNumber: 
  versionNumber: 
  isMainBranch: $[eq(variables['Build.sourceBranch'],'/Main')] 
  isMinorBranch: $[eq(variables['Build.sourceBranch'],'/Minor/')]
  isHotfixBranch: $[eq(variables['Build.sourceBranch'],'/Hotfix/')] 

name: $(version.MajorMinor).$(version.Revision)  

steps:
- checkout: self
  persistCredentials: true

- task: PowerShell@2
  displayName: Set the minorVersionNumber and hotfixnumber variable values
  inputs:
    targettype: 'inline'
    script: |
      [string] $dateTime = (Get-Date -Format 'yyyyMMddTHHmmss')
      [string] $minorVersionNumber = "$(stabLeversionNumber)-ci$dateTime+$(Build.sourceVersion)"
      [string] $hotFixVersionNumber = "$(version.MajorMinor).$(version.Revision).$(version.HotFix)"
      Write-Host "Setting the prerelease version number variable to '$minorVersionNumber'."
      Write-Host "##vso[task.setvariable variable=minorVersionNumber]$minorVersionNumber"

- task: PowerShell@2
  displayName: Set the versionNumber
  inputs:
    targettype: 'inline'
    script: |
      [boolean] $isMain = $$(isMainBranch)
      [boolean] $isMinor = $$(isMinorBranch) 
      [string] $versionNumber = "$(minorVersionNumber)"
      if ($isMain)
      {
        $versionNumber = "$(stabLeversionNumber)"
      }
      elseif ($isMinor)
      {
        $versionNumber = "$(minorVersionNumber)"
      }
      else {
        $versionNumber = "$(hotFixVersionNumber)"
      }
      Write-Host "Setting the version number to use to '$versionNumber'."
      Write-Host "##vso[task.setvariable variable=versionNumber]$versionNumber"
      git config user.email ${{variables['user.email']}}
      git config user.name ${{variables['user.name']}}
      git tag "$(Build.BuildNumber)"
      git push origin "$(Build.BuildNumber)"
    displayName: 'git tag'
    condition: eq(variables['Build.sourceBranchName'],variables['isMainBranch'])

当合并“Major”和“Hotfix”时,管道可以完美运行,只有当合并“Minor”时,管道才会继续并将其视为“Hotfix”(这是因为它通过了 if 语句并在else 语句“修补程序”)。

此管道中“minor”未与 tagnumber x.1.x 合并的问题在哪里

非常感谢帮助

解决方法

我猜这些变量没有按预期工作:

isMinorBranch: $[eq(variables['Build.SourceBranch'],'/Minor/')]
isHotfixBranch: $[eq(variables['Build.SourceBranch'],'/Hotfix/')] 

签入 isMainBranch 没有尾部斜杠,那么为什么要这样做呢?结果,isMinorBranchisHotfixBranch 始终为假,脚本落入最后一个 else 语句。

要证明假设,请尝试在脚本中回显变量值,即:

write-host 'sourcebranch=${{variables['Build.SourceBranch']}}'
write-host 'isMinorBranch=$(isMinorBranch)'
write-host 'isHotfixBranch=$(isHotfixBranch)'

您还可以将最后一个 else 更改为:

elseif ($isHotfix) {
    $versionNumber = "$(hotFixVersionNumber)"
}
else {
    throw "not main,not minor,not hotfix. What is it?"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。