TeamCity: étiquetage de VCS (Subversion) avec la version du fichier d'un artefact
-
22-07-2019 - |
Question
Je souhaite créer une étiquette (étiquette) dans le SVN avec la version d'un fichier.
Je suis déjà en train de renommer l'artefact en récupérant la version du fichier de l'exécutable principal produite par la construction. Tels que: MyInstaller-1.2.3.1.exe
. Maintenant, je veux créer une balise dans le SVN appelée /tags/1.2.3.1
. Je ne pouvais pas trouver un moyen de définir une telle chose dans le modèle d'étiquetage.
Actuellement, mon libellé est juste & ";% system.build.number% &";
Avez-vous une idée de la façon de procéder?
J'utilise TeamCity Professional version 4.5.3 (build 9035)
La solution
Comme l’a mentionné une personne, vous pouvez générer le numéro de version lors de l’exécution du script de génération, et Teamcity utilisera cette sortie pour étiqueter la construction. Par exemple, je marque ma construction avec la même version que celle que j'ai mise dans AssemblyInfo.cs. Une partie de cette version (majeure, mineure) se trouve déjà dans le fichier, l'autre partie (construction, révision) est ajoutée lors de la construction.
À partir de mon 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>
vous venez de sortir la version lors de la construction du format est ##teamcity[buildNumber '<buildnum>']
Autres conseils
Si vous utilisez Ant, vous devriez peut-être obtenir SVNAnt.jar et essayer this .
La convention d'étiquetage que j'ai vue est major.minor.svn (et .build si vous utilisez CI).
Vous pouvez inclure un numéro de révision SVN dans votre numéro de version TeamCity. Pour votre modèle de numéro de construction dans Teamcity, utilisez le type {build.vcs.number.1} dans le champ du modèle de numéro de construction.
Après ce numéro de build contiendra le numéro de révision SVN actuel et votre modèle de libellé% system.build.number% le contiendra également.
J'espère que ça aide, KIR