我有一个属性组,其中包含build_number的属性,该属性从TeamCity仅作为Build Counter传入。在TeamCity中设置的构建号格式仅为计数器的{0}。
<PropertyGroup>
<Major>10</Major>
<Minor>1</Minor>
<Build>$(BUILD_NUMBER)</Build>
<Release>0</Release>
...
</PropertyGroup>
然后,从源代码管理中的文件中的值更新Major,Minor和Release属性。
因此,TeamCity将构建记录为完整的4部分构建引用(而不仅仅是计数器),因此我将其设置为:
<TeamCitySetBuildNumber BuildNumber="$(Major).$(Minor).$(Build).$(Release)" />
但是,现在当我引用我的$(Build)属性时,它现在被设置为4部分构建引用,并且我在使用TeamCitySetBuildNumber设置之前引用$(BUILD_NUMBER)的任何属性也会被覆盖4部分参考。
NB我也用系统消息更改了它:
<Message Text="##teamcity[buildNumber '$(Major).$(Minor).$(Build).$(Release)']" />
但整体效果是一样的。
在上面设置BuildNumber之后,如何引用构建计数器(仅限)?
答案 0 :(得分:2)
如果您正在使用项目文件,则可以尝试在* .vbproj或* .csproj文件的AfterBuild部分中调用TeamCitySetBuildNumber命令:
<Target Name="AfterBuild">
<TeamCitySetBuildNumber BuildNumber="$(Major).$(Minor).$(Build).$(Release)" />
</Target>
如果您正在使用解决方案文件,我会创建一个调用您的解决方案文件的* .proj文件,然后调用TeamCitySetBuildNumber命令(不确定您是否可以像这样在目标中调用TeamCitySetBuildNumber命令...):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="SetBuildNumber">
<PropertyGroup>
<Major>10</Major>
<Minor>1</Minor>
<Build>$(BUILD_NUMBER)</Build>
<Release>0</Release>
</PropertyGroup>
<Target Name="Build">
<Message Text="Build task called... " Importance="high"/>
<MSBuild Projects="$(teamcity_build_checkoutDir)\your_solution.sln" Properties="Configuration=Release"/>
</Target>
<Target Name="SetBuildNumber" DependsOnTargets="Build">
<Message Text="Setting build number back to TeamCity... " Importance="high"/>
<TeamCitySetBuildNumber BuildNumber="$(Major).$(Minor).$(Build).$(Release)" />
</Target>
</Project>