【发布时间】:2018-09-20 16:32:57
【问题描述】:
我有一个 git repo,有一个 master 分支,我们从中获取 feature\myFeature,继续工作,然后将拉取请求发送回 master .. 非常简单。
当feature 分支被推送到 git 存储库时,我们有一个在该分支上运行的构建过程,并生成一个构建。它从项目的程序集中获取 semver 信息 major.minor.patch..
我想做的是(取决于构建是在feature 还是master)更改构建名称的构造..
类似:
-
feature--> 1.0.3-alpha1, 1.0.3-alpha2, 1.0.3-alpha3 -
master--> 1.0.3-rc1, 1.0.3-rc2
我现在面临的挑战是,从使用 $(Rev:r) 得出的最后数字似乎无法用于我为计算内部版本号而编写的 PowerShell 任务中。 ..
我尝试围绕设置内部版本号进行一些测试,例如:
Write-Output ("##vso[task.setvariable variable=ReleaseType]alpha")
然后做...
$(ReleaseType)$(Rev:.r)
似乎将发布名称“锁定”为 ReleaseType var..的任何原始值。
我尝试过的另一个选项是:
Write-Output ("##vso[build.updatebuildnumber]"-alpha")
但这只会覆盖选项表内部版本号格式框中的任何内容...
我正在尝试做的事情可能吗?我想另一种方法是为每种分支类型设置不同的构建过程。似乎有点 OTT .. 有什么方法可以从 PowerShell 派生 $(Rev:.r) 吗?
【问题讨论】:
-
我不知道它是否有帮助,但我用短哈希和分支名称
Write-Host("##vso[build.updatebuildnumber]$env:BUILD_BUILDNUMBER" + "_" + $env:BUILD_SOURCEVERSION.Substring(0,9) + "+" + $env:BUILD_SOURCEBRANCHNAME)更新内部版本号@ -
在更新内部版本号之前,您可以测试
$env:BUILD_SOURCEBRANCHNAME的值以查看它是master还是其他分支... -
我将在今天晚些时候发布我当前的解决方案 :)
标签: git azure-devops azure-pipelines azure-pipelines-build-task