我是Groovy語言的新手,正在使用它爲Jenkins作業編寫自定義參數。在下面的腳本中,第一個(「git checkout master」)和last(「git branch -r --no-merged master」)命令工作得很好。然而,由於除了我在下面評論的最初的'[git pull]'之外沒有任何輸出,所以git pull不會執行。從最後一個命令「git branch -r --no-merged master」返回的內容是不正確的,因爲我的出處在我的本地之前。git pull不能在Groovy中工作
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的結帳大師] 你的分支是落後10所提交的原籍/主「,可快進。 (使用 「混帳拉」 來更新你的本地分支)
[混帳拉]
[git的分支-r --no-合併的主] 出身/ HEAD - >產地/主產地 /主 產地/ testb1 產地/ testb2
第一個和第三個命令可以正常工作,而不會將它們放入列表中。這似乎並不奏效。無論如何,我已經嘗試過,無論使用和不使用列表,拉仍然無法正常工作。 – Alex 2015-04-03 13:31:30
Opal - 如果命令參數應該總是以List的形式傳遞,那麼請您解釋這些不使用列表的示例:http://groovy-lang.org/groovy-dev-kit.html#process-management,http:/ /www.joergm.com/2010/09/executing-shell-commands-in-groovy/,http://mrhaki.blogspot.com/2009/10/groovy-goodness-executing-string-or.html, – Alex 2015-04-03 14:25:18
是,這些例子非常簡單。看來你並沒有通過groovy執行很多外部命令。 'String'的一個實例可以被執行的事實並不意味着這是正確的,並且不容易出錯。 – Opal 2015-04-07 07:37:39