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

Ric*_*ton 9 git teamcity git-flow octopack

我试图将分支名称从TeamCity传递给OctopusDeploy,以便我们可以轻松跟踪部署来自哪个分支.

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

这很好用,除了我们使用git-flow所以我们的一些分支包含斜线会导致octopack失败(因为文件名不能包含斜杠):

+:refs/heads/(feature/*)
+:refs/heads/(release/*)
+:refs/heads/(hotfix/*)
Run Code Online (Sandbox Code Playgroud)

有没有办法用TeamCity中的其他东西替换斜杠而不改变我们命名分支的方式?

dan*_*dan 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
Run Code Online (Sandbox Code Playgroud)