TeamCity: etiquetado de VCS (Subversion) con la versión de archivo de un artefacto
-
22-07-2019 - |
Pregunta
Quiero crear crear una etiqueta (etiqueta) en el SVN con la versión de un archivo.
Ya estoy cambiando el nombre del artefacto al obtener la versión del archivo del ejecutable principal producido por la compilación. Tales como: MyInstaller-1.2.3.1.exe
. Ahora quiero crear una etiqueta en el SVN llamada /tags/1.2.3.1
. No pude encontrar una manera de establecer tal cosa en el patrón de etiquetado.
Actualmente mi etiquetado es solo "% system.build.number% "
¿Alguna idea sobre cómo hacer esto?
Estoy usando TeamCity Professional versión 4.5.3 (compilación 9035)
Solución
Como alguien mencionó, puede generar el número de compilación durante la ejecución del script de compilación, y teamcity usará esa salida para etiquetar la compilación. Por ejemplo, etiqueto mi compilación con la misma versión que puse en AssemblyInfo.cs. Parte de esa versión (Mayor, Menor) ya está en el archivo, la otra parte (Compilación, Revisión) se agrega durante la compilación.
De mi 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>
acaba de generar la versión durante la compilación, el formato es ##teamcity[buildNumber '<buildnum>']
Otros consejos
Si está utilizando Ant, tal vez debería obtener SVNAnt.jar e intentar esto .
La convención que he visto para etiquetar es major.minor.svn (y .build si está usando CI).
Puede incluir el número de revisión SVN en su número de compilación de TeamCity. Para su patrón de número de compilación en Teamcity, use algo como {build.vcs.number.1} en el campo de patrón de número de compilación.
Después de ese número de compilación contendrá el número de revisión SVN real, y su patrón de etiquetado% system.build.number% también lo contendrá.
Espero que esto ayude, KIR