TeamCity: rotulagem VCS (Subversion) com versão de arquivo de um artefato
-
22-07-2019 - |
Pergunta
Eu quero criar criar uma etiqueta (tag) no SVN com a versão do arquivo.
Eu já estou renomeando o artefato, obtendo a versão do executável principal produzido pelo acúmulo de arquivos. Tais como: MyInstaller-1.2.3.1.exe
. Agora eu quero criar uma tag no SVN chamado /tags/1.2.3.1
. Eu não poderia encontrar uma maneira de definir tal coisa no padrão de marcação.
Atualmente o meu rotulagem é apenas "% system.build.number%"
Qualquer idéia sobre como fazer isso?
Eu estou usando TeamCity Professional Versão 4.5.3 (compilação 9035)
Solução
Como alguém mencionou, você pode saída o número de compilação durante a execução do script de construção, e TeamCity vai usar a saída para rotular a compilação. Por exemplo, eu rotular meu construir com a mesma versão que eu colocar em AssemblyInfo.cs. Parte dessa versão (maior, menor) é, na verdade, no arquivo já, por outro (Build, Revisão) é adicionado durante a compilação.
De meu 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>
que você acabou de saída a versão durante a construir o formato é ##teamcity[buildNumber '<buildnum>']
Outras dicas
Se você estiver usando Ant, talvez você deve começar SVNAnt.jar e tentar este .
A convenção que eu já vi para a rotulagem é major.minor.svn (e .construa se você estiver usando CI).
Você pode incluir o número de revisão do SVN para o seu número de TeamCity construção. Para o seu padrão de número de compilação em TeamCity, use algo como {build.vcs.number.1} no campo padrão de número de compilação.
Depois que número de compilação irá conter o número de revisão do SVN real, e seu padrão de marcação% system.build.number% irá contê-lo também.
Espero que isso ajude, KIR