31 votes

Comment puis-je étiqueter ma version avec le numéro de révision et non le GUID (dans TeamCity)?

Je suis en train de faire "intégration continue" avec TeamCity. Je voudrais de l'étiquette de mon intègre une façon incrémentielle et le GUID fournis par le VCS n'est pas aussi utile qu'un simple nombre croissant. Je voudrais le numéro à fait correspondre à la révision du nombre de Mercurial.

Mon état de choses:

alt text

Mercurial info:

alt text

Je voudrais que la construction afin d'être étiquetés 0.0.12 plutôt que de le GUID.

Quelqu'un aurait la gentillesse, et sauve-moi des heures à essayer de comprendre cela ?

46voto

Ry4an Points 56453

Comme Lasse V. Karlsen citer celles numérique des numéros de révision sont locales-clone spécifique et peuvent être différentes pour chaque clone. Ils ne sont vraiment pas adaptés pour la gestion des versions-on pourrait reclone la même repo et obtenir différents numéros de révision.

À tout le moins inclure l'id de nœud également la création de quelque chose comme 0.0.12-6ec760554f2b , puis vous obtenez toujours sortable libération des artefacts, mais sont toujours fermement l'identification de votre libération.

Si vous êtes numérique à l'aide de balises de la balise communiqués il y a une particulièrement intéressante:

% hg log -r tip --template '{latesttag}.{latesttagdistance}'

qui, si la plus récente de la balise sur ce clone a été appelé 1.0.1 et a été 84 s'engage il y donne une valeur comme:

1.0.1.84

Comme vous pouvez avoir différents chefs qui sont 84 s'engage à l'écart à partir d'une étiquette dans différentes repos, vous devriez probablement inclure l'id de nœud comme:

% hg log -r tip --template '{latesttag}.{latesttagdistance}-{node|short}'

donner:

1.0.1.84-ec760554f2b

ce qui fait une grande chaîne de version.

13voto

Vasiliy Borovyak Points 1256

La plus simple et la meilleure façon de voir apoc. nombre de TeamCity numéro de build est d'utiliser le Script de construction de l'Interaction avec TeamCity. À savoir, il est possible de définir le Numéro de Build.

Alors, ajoutez à votre projet une nouvelle première étape de génération de Ligne de Commande avec la Commande suivante Exécutable

for /f %%i in ('c:\tortoisehg\hg id -n') do echo ##teamcity[buildNumber '%%i']

Et vous obtiendrez l'Mercurial numéro de révision comme une étiquette pour chaque génération.

Bien sûr, vous pouvez modifier la commande dans les guillemets pour tout ce que vous souhaitez.

Je crois que ma réponse est plus correct que les reconnus.

EDIT:

Aussi, vous pouvez faire la même chose via MSBuild tâche plutôt que de Commande Exécutable. Avoir un projet MSBuild fichier avec le code suivant, le programme d'installation TeamCity l'exécuter en tant que première étape, et il va modifier son variable globale buildNumber:

<Message Text="##teamcity[buildNumber '$(CurrentVersion)']" Importance="High" />

CurrentVersion est une chaîne contenant la version complète (par exemple "1.0.56.20931").

6voto

Chris Morgan Points 22285

hg id produit le hachage ( 6ec760554f2b ), hg id -n produit le numéro de révision local ( 12 ).

(Notez que c'est une réponse purement du côté hg, comment vous intégrez cela dans TeamCity, je ne sais pas, car je ne l'ai jamais utilisé.)

5voto

sabanito Points 416

J'ai réussi à l'utiliser dans Teamcity en utilisant une solution de contournement:

     <Exec Command="hg log -r tip --template {latesttag}.{latesttagdistance} > $(BuildAgentTempDir)\version.txt"/>
    <ReadLinesFromFile File="$(BuildAgentTempDir)\version.txt">
        <Output TaskParameter="Lines" ItemName="versionInfo"/>
    </ReadLinesFromFile>
    <TeamCitySetBuildNumber BuildNumber="@(versionInfo)-{build.number}" />
 

Si vous voyez la tâche MSBuild "TeamCitySetBuildNumber", j'utilise la variable "{build.number}" car elle la remplace par ce que vous avez défini à l'origine dans le numéro de build. J'ai utilisé% build.vcs.number% dans mes paramètres d'origine (dans l'interface utilisateur Web) et le résultat est exactement ce que Ry4an a écrit ci-dessus!

J'espère que ça marche pour toi!

3voto

Bronumski Points 5754

Quand j'ai l'habitude d'utiliser Subversion que j'ai utilisé pour faire quelque chose de similaire dans TeamCity. Le format est:

{Major}.{Minor}.{TeamCity Build No.}.{Subversion Revision No.}

Cela m'a permis de regarder une assemblée et de voir ce qui construire venaient de sur TeamCity et le numéro de révision de la subversion.

J'ai maintenant déménagé à Git qui m'a mis dans la même situation que vous. Après avoir joué avec les différentes idées qui me sont venus à la conclusion que je n'ai pas vraiment besoin de la révision, le build est assez bon. Parce que TeamCity est un outil puissant, tous vous avez besoin est le numéro de build, étant donné le numéro de build, vous pouvez regarder les construire l'histoire et de déterminer la révision de que.

{Major}.{Minor}.{Macro}.{TeamCity Build No.}

En outre, vous pouvez obtenir TeamCity à l'étiquette de votre dépôt avec le numéro de build vous permettant de rechercher une donnée construire dans votre source de contrôle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X