【问题标题】:TeamCity - AssemblyInfoPatcher not using updated variableTeamCity - AssemblyInfoPatcher 不使用更新的变量
【发布时间】:2016-04-12 21:09:01
【问题描述】:

我正在使用 Powershell 中的服务消息(构建脚本交互)更改 TeamCity (9.1.4) 构建的构建号:

Write-Host "##teamcity[buildNumber '$version.$arg2']"

这一切都很好。

问题是 AssemblyInfoPatcher 不想使用这个更新的内部版本号。

所以我尝试为其使用变量/参数,但这也不起作用。

我将以下变量“Major.Minor.Patch”定义为“配置参数”或“环境变量”。 AssemblyInfoPatcher 可以很好地使用这些变量,并使用构建中 TeamCity 中定义的版本更改我的文件的文件版本。

如果我尝试使用服务消息更改变量/参数,它不起作用。 AssemblyInfoPatcher 仍在使用旧值。

环境变量示例

Write-Host "##teamcity[setParameter name='env.Major.Minor.Patch' value='$version']"

配置参数示例

Write-Host "##teamcity[setParameter name='Major.Minor.Patch' value='$version']"

我做错了什么还是不可能?我唯一想要的是我的文件与我的 TeamCity 版本具有相同的版本号...

【问题讨论】:

    标签: powershell teamcity teamcity-9.0


    【解决方案1】:

    AsssemblyInfoPatcher在任何构建步骤之前运行(然后再次运行以恢复您的 AssemblyInfo 文件在所有构建步骤之后)。因此,如果您的构建步骤之一使用服务消息设置Major.Minor.Patch,那么对于游戏来说真的为时已晚。

    也许您可以将多个构建配置串在一起。第一个配置 (A) 将像您现在一样设置参数,然后触发第二个配置 (B),它将使用 AssemblyInfoPatcher。 B 将具有对 A 的快照依赖项(除了完成构建触发器),因此它的 AssemblyInfoPatcher 将能够引用%dep.A.Major.Minor.Patch%。当然,这个参数在 B 的 AssemblyInfoPatcher 运行时就已经可用了。

    【讨论】:

    • 感谢您的快速回复。您是否可能有一个关于如何将构建串在一起的教程的链接?我从未在 TeamCity 中这样做过。
    • 1) 创建一个名为 SetVersion 的新构建配置,其中包含将执行服务消息的构建步骤。 2) 修改原始构建配置的触发器,在 SetVersion 上添加“完成构建触发器”。 3) 修改原始构建配置的依赖项,在 SetVersion 上添加“快照依赖项”。 4) 修改您当前构建配置的 AssemblyInfoPatcher 以引用 %dep.SetVersion.Major.Minor.Patch%。我希望这会有所帮助。
    • 感谢您的简短解释。我自己设法做到了。我几乎按照你说的做了所有事情,但我没有做第 2 步。我保留了 VCS 触发器,它仍然可以工作,因为依赖项 TeamCity 首先构建了版本构建。
    猜你喜欢
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多