Ich benutze Git als VCS in TeamCity.Wie erkennt man ein Tag für eine aktuelle Codeänderung in TeamCity?
Ich möchte die git tag
aus dem Commit extrahieren, für die wir den Build tun.
Irgendeine Idee, wie ich es tun könnte?
Ich benutze Git als VCS in TeamCity.Wie erkennt man ein Tag für eine aktuelle Codeänderung in TeamCity?
Ich möchte die git tag
aus dem Commit extrahieren, für die wir den Build tun.
Irgendeine Idee, wie ich es tun könnte?
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
+:*
und -:<default>
.(Quelle: "How to run a TeamCity build only for tags?")
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
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
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
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
Das scheint eine genauere Antwort als meine. +1 – VonC
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
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