如何解决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
没有尾部斜杠,那么为什么要这样做呢?结果,isMinorBranch
和 isHotfixBranch
始终为假,脚本落入最后一个 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 举报,一经查实,本站将立刻删除。