我们的Teamcity构建目前以1.0.0。[SVN REVISION]格式生成构建号,并将其传递给MSBUILD。
我需要将其更改为格式1.0。[DLL VERSION]。[SVN REVISION]我们在其中插入依赖dll的去点版本。例如,如果我们的依赖dll是版本1.2.3.4,则生成的构建号码是1.0.1234。[SVN REVSION]。
依赖的dll是构建源代码的一部分,所以我希望我可以使用构建参数和一个小的exe来做一些事情,将它与版本信息进行整合,但无法通过UI看到任何方法将其合并。
如果有可能,有什么想法吗?
答案 0 :(得分:10)
您可以在构建脚本执行期间输出构建号,teamcity将使用该输出来标记构建。例如,我使用与AssemblyInfo.cs相同的版本标记我的构建。该版本的一部分(Major,Minor)实际上已经在文件中,另一部分(Build,Revision)在构建期间被添加。
从我的msbuild脚本:
<Target Name="Setup">
<!-- Version.txt contains the major and minor version numbers,
The build number and revision come from environment variables
in the next step -->
<Version VersionFile="Version.txt" BuildType="None" RevisionType="None">
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
</Version>
<!-- If you want to build a release without going through the build
server, you should define the following 2 environment variables
when running this build script -->
<!-- BUILD_NUMBER environment variable supplied by the build server -->
<CreateProperty
Value="$(BUILD_NUMBER)">
<Output
TaskParameter="Value"
PropertyName="Build" />
</CreateProperty>
<!-- BUILD_VCS_NUMBER environment variable supplied by the build server -->
<CreateProperty
Value="$(BUILD_VCS_NUMBER)">
<Output
TaskParameter="Value"
PropertyName="Revision" />
</CreateProperty>
<AssemblyInfo CodeLanguage="CS"
OutputFile="Properties\VersionInfo.cs"
AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)"
AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />
<!-- Tell the build server what our actual build number is -->
<Message Text="##teamcity[buildNumber '$(Major).$(Minor).$(Build).$(Revision)']" />
</Target>
您只需在构建期间输出版本,格式为##teamcity[buildNumber '<buildnum>']