2016-08-03 36 views

Antwort

0

Sie können die Ausgabe von git describe

v1.0.4-14-g2414721 
     ^^ 

überprüfen Wenn Sie nicht sehen, ‚0‘ nach dem Tag, dann begeht der Strom nicht von einem Tag verwiesen.

für alle Tags ofr einem aktuellen bekommen begehen:

git log -n1 --pretty=format:%h%d @ 

Vergessen Sie nicht, dass Sie mehrere Tags zugeordnet ist ein begehen kann.


Aber für Teamcity, überprüfen Sie, ob Sie VCS branch trigger die Gebäude helfen kann nur für Tags mit

  • Niederlassung Spezifikation in der VCS Wurzel als nutzen könnten "+: refs/tags/*"
  • VCS Build-Trigger-Regeln zu: +:* und -:<default>.

(Quelle: "How to run a TeamCity build only for tags?")

+0

Vielen Dank für die Antwort, wie ich verstehe, wird dieser Ansatz nur für den regulären Build funktionieren. Entschuldigung, wahrscheinlich hätte ich es in meiner Frage - ich bin am Szenario "Benutzerdefiniertes Build" interessiert - erwähnt, wenn Sie manuell die Änderung auswählen, für die Sie einen Build erstellen möchten.Ich könnte GIT DESCRIBE verwenden, um das Tag zu bekommen - aber wie kann ich die Commit-Kennung erhalten, für die ich den Build erstellen möchte? – Alex

1

Sie können dies aber nicht nativ.

Sie müssen Git auf Ihren Buildagenten installieren und sicherstellen, dass der Code auf dem Agenten ausgecheckt ist. Weitere Informationen darüber, warum muss dies getan werden kann, in der TeamCity Checkout Mode Documentation

enter image description here

auf den Agenten Dadurch wird sichergestellt, dass ein Git Repository erstellt gefunden werden und Sie können dann laufen git nativ-Befehle. Die Sie brauchen, ist

git describe --tags <commit-id> 

In Teamcity sollten Sie in der Lage sein, ein Powershell Schritt ähnlich wie diese

enter image description here

Diese laufen wird Fehler, wenn es keine Tags sind! Sie können den Schalter --always hinzufügen, um einen shorted Hash zurückgeben, wenn keine Tags vorhanden sind.

SET VARIABLE Teamcity

$tag = git describe --tags %build.vcs.number% --always 
Write-Host "##teamcity[setParameter name='MyParameterName' value='$tag']" 

Der Parameter "MyParameterName" muss bereits definiert sein.

Hoffe, das hilft

+0

Danke! das ist hilfreich! Aber wie kann ich die Ausgabe der benutzerdefinierten Skriptausführung in TeamCity ConfiguationParameter (oder anderswo) setzen, damit ich den Tag-Text wiederverwenden kann? In meinem Fall möchte ich ein Tag für die Versionsnummer des Pakets nuget verwenden? – Alex

+0

Das scheint eine genauere Antwort als meine. +1 – VonC

+0

Ich habe den Konfigurationsparameter MyParameterName erstellt und dann das bereitgestellte Skript in "Custom script" eingefügt - der Build schlägt fehl mit der Meldung "Die Syntax des Befehls ist falsch." :( – Alex