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

emm*_*dee 4 git jenkins jenkins-pipeline

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

那里接受的答案对我不起作用,我认为从那时起,管道内的行为一定已经发生了变化。

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

在我的多分支管道作业中,我添加了“发现标签”步骤发现标签

我有一个带有发布标签集的 git 存储库:

myhost$ git fetch
myhost$ git tag
0.0.42
myhost$ git tag --sort version:refname
0.0.42
Run Code Online (Sandbox Code Playgroud)

在 Jenkinsfile 中我尝试过:

sh "git tag --sort version:refname | tail -1 > version.tmp"
sh "cat version.tmp"
Run Code Online (Sandbox Code Playgroud)

和:

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

两者都没有返回(null)

Flo*_*ian 6

您必须确保 Jenkins 使用标签获取您的存储库。您可以在 Jenkins 构建控制台中查看是否是这种情况。必须有一行像git fetch --no-tags ...orgit fetch --tags ...

我的詹金斯安装似乎有时会在没有明显原因的情况下改变这种行为。为了确保它获取标签,请使用复选框“不获取未标记的标签”将高级克隆行为添加到您的管道作业中。

在此输入图像描述