我是Groovy语言的新手,并且正在使用它为Jenkins作业编写自定义参数。在下面的脚本中,第一个(" git checkout master")和last(" git branch -r --no-merged master")命令工作得很好。但是,git pull不会执行,因为除了初始' [git pull]'之外没有输出。我在下面评论过。从最后一个命令返回的内容" git branch -r --no-merged master"是不正确的,因为我的出身是在我当地之前。
def dir = "C:/JenkinsBuilds/WidgetLoader/Source"
def srcDir = new File(dir)
String command1 = "git checkout master"
println ("[$command1]")
Process process1 = command1.execute(null, srcDir)
process1.waitFor()
println(process1.text)
String command2 = "git pull origin master"
println ("[$command2]") // This will output
Process process2 = command2.execute(null, srcDir)
process2.waitFor()
println(process2.text) // Only a blank line is outputted
String command3 = "git branch -r --no-merged master"
println ("[$command3]")
Process process3 = command3.execute(null, srcDir)
process3.waitFor()
println(process3.text)
def branches = ["-- SELECT BRANCH --","master"]
process3.text.eachLine {line -> branches.add(line.trim().replaceAll('origin/', ''))}
return branches
这是返回的内容
[(主)]: [git checkout master] 你的分支机构落后于原点/主人。通过10次提交,可以快进。 (使用" git pull"更新您当地的分支机构)
[git pull]
[git branch -r --no-merged master] origin / HEAD - >产地/主 产地/主 产地/ testb1 原点/ testb2
答案 0 :(得分:0)
命令参数应始终作为List
传递。尝试:
def command1 = ["git", "checkout", "master"]
def command2 = ["git", "pull", "origin", "master"]
def command3 = ["git", "branch", "-r", "--no-merged", "master"]
答案 1 :(得分:0)
好的,所以我发现发生了什么事,这要归功于我找到的一段代码here。
def command2 = "git pull"
println ("[$command2]")
StringBuffer sbout = new StringBuffer()
StringBuffer sberr = new StringBuffer()
Process process2 = command2.execute(null, srcDir)
process2.waitForProcessOutput sbout, sberr
def value = process2.exitValue()
int count = sbout.toString().readLines().size()
println "${sberr.toString()}"
println "Exit value: $value, Err lines: ${sberr.toString().readLines().size()}, Out lines: $count"
assert count > 1
assert value == 0
[git pull]权限被拒绝(publickey)。致命:无法读取 远程存储库。
我的问题是git pull上没有异常,并且不清楚如何查看是否还有其他错误。话虽这么说,我想我会分享这段代码片段以防其他人遇到类似的问题。
我可以使用此权限错误,与原始问题无关,因此我将此评论标记为答案。