【问题标题】:Removing slashes from branch names in TeamCity从 TeamCity 中的分支名称中删除斜杠
【发布时间】:2016-01-29 21:11:55
【问题描述】:

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

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

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

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

有没有什么方法可以在不改变我们命名分支的方式的情况下用 TeamCity 中的其他东西替换斜线?

【问题讨论】:

    标签: git teamcity git-flow octopack


    【解决方案1】:

    使用构建脚本,您可以与构建过程进行交互,并指定一个自定义构建编号,您可以在其中替换斜杠。更多详情请查看 TeamCity docs

    Here 你可以找到一个关于如何更改内部版本号的 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,但一切都很好),因此它不依赖于外部资源,那么我将奖励您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2013-12-29
    • 2015-07-25
    相关资源
    最近更新 更多