2015-06-29 70 views
4

我在Jenkins中創建的稱爲「Gradle部署」的視圖之一中有大約100-120個作業。我怎樣才能從給定的視圖/標籤禁用Jenkins的所有工作。從給定的Jenkins中禁用所有Jenkins作業查看/標籤

我嘗試了下面的groovy語法來首先顯示給定視圖中的所有作業,但它出錯了。

jenkins = Hudson.instance 

//The following works actually but gives a lot of info. 
//println "----" + jenkins.instance.getView("Gradle Deploys").items 

println "----" + jenkins.instance.getView("Gradle Deploys").items.each.getItems().print(it) 

一旦我得到在一個給定的觀點只是工作名稱的列表,我只是在上面的命令中使用「.disable()」功能,它會工作。

如果我使用下面的代碼,它做我想要的,但我正在尋找一個班輪。

for (item in jenkins.instance.getView("Gradle Deploys").items) { 
    println("\nJob: $item.name") 
    item.disabled=true 

} 

回答

1

感謝Tim的解決方案。我添加/進一步增強了一點:

jenkins.instance.getView("Gradle Deploys").items*.disabled = true 

但是如果你想在同一時間打印出來的東西,你需要一個每個

jenkins = Hudson.instance 

    jenkins.instance.getView("Gradle Deploys").items.each { item -> 
    println "\nJob: $item.name" 
    item.disabled = true 
} 

現在,上面的例子作品如果您嘗試從「腳本控制檯」運行它們,但如果嘗試將其作爲Scriptler腳本創建/運行(如下所示),則會出錯。

請參閱:上述代碼在Jenkins的腳本控制檯視圖中工作(當您單擊管理Jenkins>腳本控制檯時)。爲了得到這個,你可能需要安裝插件。

enter image description here

現在,同樣的劇本沒有,當我試圖創建一個腳本編寫者腳本並運行它的方式工作。這需要安裝Scriptler Plugin。

enter image description here

爲了解決上述錯誤消息(如圖中Scriptler腳本 - 窗口),則需要輸入另一條線(在頂部)。

最終腳本看起來像(注:的viewName變量的值將由Scriptler參數來提供,它會覆蓋任何你將在腳本本身提):

//下面這行是必要的,如果您正在通過「Scriptler Script」腳本方式運行腳本/代碼。 //這種方式可以提示用戶提供參數(例如:viewName),並使用它僅在該視圖中禁用作業。

import hudson.model.* 

jenkins = Hudson.instance 

println "" 
println "--- Disabling all jobs in view: ${viewName}" 
println "" 

jenkins.instance.getView(viewName).items*.disabled = true 

//Now the above will disable it but you still need to save it. Otherwise, you'll loose your changes (of disabling the jobs) after each Jenkins restart. 
jenkins.instance.getView(viewName).items.each { item -> item.save() } 
9

你應該能夠只是禁用它們全部用:

jenkins.instance.getView("Gradle Deploys").items*.disabled = true 

但是如果你想在同一時間打印出來的東西,你需要一個each

jenkins.instance.getView("Gradle Deploys").items.each { item -> 
    println "\nJob: $item.name" 
    item.disabled = true 
} 
+0

是否有可能使用每個第一個命令(一個一行),如果我不想顯示/回聲什麼? –

+0

你不應該需要第一個命令應該禁用所有的項目 –

+0

我已經更新了答案以支持「腳本控制檯」和「Scriptler」運行腳本的方式。否則,當我以腳本方式嘗試代碼(在Jenkins的Script Console窗口中成功運行)時,它給了我一個錯誤。 –