【问题标题】:Teamcity 9: How to add git short hash into assembly info patcherTeamcity 9:如何将 git short hash 添加到程序集信息修补程序中
【发布时间】:2015-05-25 01:38:27
【问题描述】:

我正在尝试使用程序集信息修补程序来创建一个版本号,例如:

1.2.3.1a3c19e

最后一位是 git 短哈希。

我尝试使用 powershell 脚本构建步骤来创建短哈希(因为我找不到具有它的变量)并将其添加到系统变量中,但是此构建步骤似乎在程序集信息修补程序之后运行,所以是没多大用处。

【问题讨论】:

    标签: git teamcity teamcity-9.0


    【解决方案1】:

    如果您想将其写入“程序集信息”字段,可以这样做,但它需要单独的构建配置来生成构建号。此步骤的唯一目的是创建附加了哈希的内部版本号。

    1.创建构建配置以生成短哈希

    2。添加生成哈希的步骤

    3.添加一个参数来存储哈希

    4.添加第二个构建配置并向第一个添加依赖项

    5.您现在可以在依赖步骤中使用参数

    6.此时你可以在程序集信息修补程序中使用它

    对此的替代方法是使用 VCS 标记构建功能将您的内部版本号写回 Git。

    希望这会有所帮助。

    【讨论】:

    • 只想添加需要单独的构建配置,因为程序集信息修补程序在收集来自 VCS 的更改之后和步骤开始执行之前运行。有一种方法可以摆脱上面示例的单独构建配置,方法是使用通过所有 AssemblyInfo.cs 文件并进行替换而不是程序集信息修补程序的 powershell 脚本:(Get-childitem -include AssemblyInfo.cs -recurse) | Foreach-Object { Set-Content -Encoding UTF8 $_ ((Get-content $_) -replace "1.0.0.0", "1.0.0-%GitShortHash%")}
    • @Alexey。我同意您可以在 powershell 中编写一个脚本来执行此操作,但我会非常谨慎地将这段代码放入其中,因为它更有可能破坏构建。默认情况下,AssemblyInfo.cs 包含 AssemblyVersion 和 AssemblyFileVersion,如果您使用短哈希,它们将无法编译。 AssemblyInfo.cs 需要先进行一些“准备”,以使该脚本不会破坏构建。
    • @DevOps,你是 100% 正确的。我留下了我的评论和脚本示例,只是为了说明可以在不添加另一个构建配置的情况下执行此操作,由于许可证限制,这可能会给 smbd 带来问题。我发布的 powershell 脚本必须更新才能仅替换所需属性的版本。
    • PS 变量如何/何时进入第 3 步中的 GitShortHash 参数,因为您已将值留空?步骤 3 中的参数是否需要是环境变量、配置参数或系统属性才能获取值?即使构建日志显示##teamcity[setParameter name='GitShortHash'],我的总是空的。
    【解决方案2】:

    如果您的意思是 .NET 程序集,您将无法使用 git 的短哈希作为修订号,因为它只接受数字。你可以自己检查一下,把上面的版本放到AssemblyVersion中。我敢打赌你的应用程序不会被编译。相反,您可以使用 teamcity 中的 %build.counter% 变量作为修订号。

    【讨论】:

    • 确实不能将此哈希写入某些字段。我假设这里的目标是将程序集版本绑定到 git 提交,在这种情况下,写入程序集信息版本是有意义的,因为它接受一个字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多