git 拉动在 Groovy 中不起作用
git pull not working in Groovy
我是 Groovy 语言的新手,正在使用它为 Jenkins 作业编写自定义参数。在下面的脚本中,第一个 ("git checkout master") 和最后一个 ("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结帐大师]
您的分支落后 'origin/master' 10 次提交,可以快进。
(使用 "git pull" 更新您的本地分支)
[git拉]
[git branch -r --no-merged master]
origin/HEAD -> origin/master
origin/master
origin/testb1
origin/testb2
命令参数应该总是作为List
传递。尝试:
def command1 = ["git", "checkout", "master"]
def command2 = ["git", "pull", "origin", "master"]
def command3 = ["git", "branch", "-r", "--no-merged", "master"]
好吧,多亏了我找到的一段代码 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] Permission denied (publickey). fatal: Could not read from
remote repository.
我的问题是在 git 拉取时没有抛出异常,并且不清楚如何查看是否有任何其他错误。话虽如此,我想我会分享这个代码片段以防其他人遇到类似问题。
我可以处理这个权限错误,它与我原来的问题无关,所以我将这条评论标记为答案。
我是 Groovy 语言的新手,正在使用它为 Jenkins 作业编写自定义参数。在下面的脚本中,第一个 ("git checkout master") 和最后一个 ("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结帐大师] 您的分支落后 'origin/master' 10 次提交,可以快进。 (使用 "git pull" 更新您的本地分支)
[git拉]
[git branch -r --no-merged master] origin/HEAD -> origin/master origin/master origin/testb1 origin/testb2
命令参数应该总是作为List
传递。尝试:
def command1 = ["git", "checkout", "master"]
def command2 = ["git", "pull", "origin", "master"]
def command3 = ["git", "branch", "-r", "--no-merged", "master"]
好吧,多亏了我找到的一段代码 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] Permission denied (publickey). fatal: Could not read from remote repository.
我的问题是在 git 拉取时没有抛出异常,并且不清楚如何查看是否有任何其他错误。话虽如此,我想我会分享这个代码片段以防其他人遇到类似问题。
我可以处理这个权限错误,它与我原来的问题无关,所以我将这条评论标记为答案。