我希望使用git tag --list '<pattern>'
命令,使用Jenkins/Groovy中的sh()
函数获取与模式匹配的git标记列表。
我一直在尝试各种方法来获得git命令的全部输出,但似乎没有任何效果。
如果我将sh()
函数与ls:一起使用
def ls = sh(
script: "ls",
returnStdout: true
)
println(ls)
// or
println(ls.readLines())
正如预期的那样,我得到了全部输出。
但当使用git tag
命令时,我似乎总是只得到最后一个";项目";。
sh(
script: "git tag --list '${pattern}*'",
returnStdout: true
)
无论我是否使用readLines()
,输出始终只是命令的最后一项
sh(
// print all items on one row instead of columns
script: "git tag --list '${pattern}*' --column=row",
returnStdout: true
)
无论是否有readLines()
,都只获取最后一个项目
sh(
// pipe output to remove spaces and add in comma
script: "git tag --list '${pattern}*' | tr [:space:] ','",
returnStdout: true
)
同样,只提取最后一个项目。
如果我在本地执行这些git命令中的任何一个,我都会从每个命令中获得所需的输出和预期的输出,但无论我做什么,Jenkins似乎都只捕获最后一项。我希望我在git命令的行为中遗漏了一些明显的东西。有人知道为什么会发生这种情况,以及如何获得所有物品吗?
尝试以下操作。
def tags = sh(script: """
git fetch --all --tags > /dev/null
git --no-pager tag --list '${pattern}*'
""", returnStdout: true )
println(tags)