Jenkins MultiBranch - 从管道文件(Jenkinsfile)引用git repo的标记

时间:2018-01-17 00:48:56

标签: git jenkins jenkins-pipeline

这与一年多前回答的问题相同:Jenkinsfile get current tag

那里接受的答案对我不起作用,我认为从那以后行为必须在管道内发生变化。

我的repo有标签(推送到原点!),我添加了Jenkins选项来发现标签,但是我无法从管道步骤中获取或引用它们。 它只显示为空。

在我的MultiBranch Pipeline作业中我添加了“发现代码”步骤discover tags

我有一个带有发布标记集的git repo:

myhost$ git fetch
myhost$ git tag
0.0.42
myhost$ git tag --sort version:refname
0.0.42

在Jenkins文件中,我尝试过:

sh "git tag --sort version:refname | tail -1 > version.tmp"
sh "cat version.tmp"

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

他们两人都没有返回(null)

2 个答案:

答案 0 :(得分:0)

你应该试试

 sh "git tag --sort version:refname > tags.tmp"
 sh "tail tags.tmp -n 1 > version.tmp"
 sh "cat version.tmp"

我认为这种改变应该有效。

谢谢,

答案 1 :(得分:0)

您必须确保Jenkins使用标记获取您的回购。您可以在Jenkins构建控制台中查看是否是这种情况。必须有git fetch --no-tags ...git fetch --tags ...之类的行。

我的Jenkins安装似乎有时没有明显的原因改变这种行为。要确保提取标记,请在管道作业中添加高级克隆行为,并选中不提取标记复选框。

enter image description here