从TeamCity的分支名称中移除斜杠

10

我想从TeamCity将分支名称传递到OctopusDeploy,以便我们可以轻松跟踪部署来自哪个分支。

为此,我希望将分支名称附加到版本号(或使用octopack构建的nuget包)上,以便我可以在OctopusDeploy UI中显示它。

这样做效果不错,但我们正在使用git-flow,因此一些分支包含斜杠,这会导致octopack失败(因为文件名不能包含斜杠):

+:refs/heads/(feature/*)
+:refs/heads/(release/*)
+:refs/heads/(hotfix/*)

在不改变分支命名方式的情况下,有没有办法在TeamCity中用其他字符替换斜杠?

1个回答

4
使用构建脚本,您可以与构建过程交互,并指定自定义构建号,其中可以替换斜杠。有关更多详细信息,请查看TeamCity 文档

此处 您可以找到有关如何更改构建号的C#示例。

例如,为了混淆构建号,您可以添加CommonAssemblyInfo.cs,其内容如下(从上面的链接中提取):

$ww = ([Math]::Floor([DateTime]::Now.DayOfYear/7)+1)

Write-Host "##teamcity[buildNumber '%major.minor%.$ww.%build.counter%']"
$fileLocation = Join-Path -Path "%teamcity.build.checkoutDir%" -ChildPath "\SourceDir\AssemblyInfo.cs" 

$oldValue = "AssemblyFileVersion\(""(\d+)\.\d+\.\d+\.\d+""\)"
$newValue = [string]::Concat("AssemblyFileVersion(""%major.minor%.", $ww, ".%build.counter%", """)")

(get-content $fileLocation) | foreach-object {$_ -replace $oldValue, $newValue} | set-content $fileLocation

谢谢,那很有帮助。如果您将一些示例代码(我最终使用了PowerShell,但任何语言都可以)添加到您的答案中,以便它不依赖于外部资源,那么我会授予您奖励。 - Richard Dalton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接