2016-05-27 14 views
3

Gibt es eine Möglichkeit, das aktuelle Tag (oder null, wenn es keine gibt) für einen Job in einer Jenkinsfile zu bekommen? Der Hintergrund ist, dass ich nur einige Artefakte (Android APKs) erstellen möchte, wenn dieses Commit ein Tag hat. Ich habe versucht:Jenkinsfile get aktuelles Tag

env.TAG_NAME 

und

binding.variables.get("TAG_NAME") 

beide sind immer null - auch wenn diese (https://issues.jenkins-ci.org/browse/JENKINS-34520) sonst

Antwort

13

zeigt ich returnStdout betrachten würde, anstatt in eine Datei schreiben :

sh(returnStdout: true, script: "git tag --sort version:refname | tail -1").trim()

+1

Ja, das ist die richtige Antwort, und war in der .jenkins-ci.org/browse/JENKINS-26133). – rbellamy

+3

Wie kann ich eine Variable gleich diesem Ergebnis setzen? –

+1

auch, ein einfacheres Skript ist 'git beschreiben --Tags --lang --dirty --allways' –

1
sh "git tag --sort version:refname | tail -1 > version.tmp" 
String tag = readFile 'version.tmp' 
0

Alle anderen Antworten ergeben auf jeden Fall eine Ausgabe, auch wenn HEAD nicht markiert ist. Die Frage war jedoch, das aktuelle Tag und "null" zurückzugeben, wenn es nichts dergleichen gibt.

git tag --contains ergibt den Namen des TAG-Namens wenn und nur wenn HEAD getaggt ist.

Für Jenkins Pipelines es sollte wie folgt aussehen: // Probleme: [zu der Zeit habe ich meine Antwort Dokumentation] (https

sh(returnStdout: true, script: "git tag --contains").trim()