4

Teamcityビルドは現在、1.0.0。[SVN REVISION]の形式でビルド番号を生成し、MSBUILDに渡します。

これを1.0。[DLLVERSION]。[SVNREVISION]の形式に変更する必要があります。ここで、依存dllのドットのないバージョンを挿入します。たとえば、依存dllがバージョン1.2.3.4の場合、生成されるビルド番号は次のようになります。 1.0.1234。[SVNリビジョン]。

依存するdllはビルドソースの一部であるため、ビルドパラメータと、バージョン情報のためにそれを統合する小さなexeを使用して何かを実行できることを望んでいましたが、UIを介してこれを組み込む方法はわかりません。

これが可能であれば何かアイデアはありますか?

4

1 に答える 1

10

ビルドスクリプトの実行中にビルド番号を出力でき、teamcityはその出力を使用してビルドにラベルを付けます。たとえば、AssemblyInfo.csに入れたのと同じバージョンでビルドにラベルを付けます。そのバージョンの一部(メジャー、マイナー)は実際にはすでにファイルにあり、他の部分(ビルド、リビジョン)はビルド中に追加されます。

私の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>']

于 2011-11-01T12:17:16.900 に答える