Domanda

Voglio creare creare un'etichetta (tag) in SVN con la versione di un file.

Sto già rinominando l'artefatto ottenendo la versione del file dell'eseguibile principale prodotta dalla build. Ad esempio: MyInstaller-1.2.3.1.exe. Ora voglio creare un tag nell'SVN chiamato /tags/1.2.3.1. Non sono riuscito a trovare un modo per impostare una cosa del genere nel modello di etichettatura.

Attualmente la mia etichettatura è solo "% system.build.number% "

Qualche idea su come farlo?

Sto usando TeamCity Professional versione 4.5.3 (build 9035)

È stato utile?

Soluzione

Come qualcuno ha menzionato, puoi generare il numero di build durante l'esecuzione dello script di build e teamcity utilizzerà tale output per etichettare la build. Ad esempio, etichetta la mia build con la stessa versione che ho inserito in AssemblyInfo.cs. Parte di quella versione (Major, Minor) è già nel file, l'altra parte (Build, Revision) viene aggiunta durante la compilazione.

Dal mio script 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>

hai appena prodotto la versione durante la compilazione, il formato è ##teamcity[buildNumber '<buildnum>']

Altri suggerimenti

Se stai usando Ant, forse dovresti ottenere SVNAnt.jar e provare questo .

La convenzione che ho visto per l'etichettatura è major.minor.svn (e .build se stai usando CI).

Puoi includere il numero di revisione SVN nel tuo numero di build TeamCity. Per il tuo modello di numeri di build in Teamcity, usa qualcosa come {build.vcs.number.1} nel campo modello di numeri di build.

Dopo quel numero di build conterrà il numero di revisione SVN effettivo e anche il modello di etichettatura% system.build.number% lo conterrà.

Spero che questo aiuti, KIR

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top