Jenkins中Groovy Scripts 示例
可以在jenkins系统管理脚本命令行部分直接测试运行这些脚本,Jenkins官网也有示例。在console直接运行脚本有一个好处就是可以批量管理所有的job以及节点,提高工作效率。
官网示例:
1.Job
获取 all jobs' names:
println(
Hudson.instance.items.size() +
' jobs: ')
for (job in
Hudson.instance.items) {
println(
' - ' + job.getName())
}
Disable包含某个pattern的很多Job
for (job in
Hudson.instance.items) {
if (job.getName().contains(
'android')) {
println(
' - Disabling ' + job.getName())
job.disabled =
true
}
}
2.worspace
删除某一个Node下面的某个Job的worspace
jobName =
"test1"
nodeNames = [
"centser1","centser2"]
jenkins =
Jenkins.instance
job = jenkins.getItemByFullName(jobName)
if (job ==
null) {
println(
"Error: Job " + jobName +
" doesn't exist")
return
}
for (nodeName in nodeNames) {
node = jenkins.getNode(nodeName)
if (node ==
null) {
println(
"Error: Node " + nodeName +
" doesn't exist")
continue
}
// get workspace path
workspacePath = node.getWorkspaceFor(job)
if (workspacePath ==
null || !workspacePath.exists()) {
println(
"No workspace " + jobName +
" found on the node " + nodeName)
continue
}
// Delete workspace
workspacePath.deleteRecursive()
// summary result
if (workspacePath.exists()) {
println(
"Failed to delete workspace " + jobName +
" on the node " + nodeName)
}
else {
println(
"Workspace " + jobName +
" succesfully deleted on the node " + nodeName)
}
}
3.Nodes
给匹配到的node打统一的标签
for (agent in
hudson.model.Hudson.instance.slaves) {
if (! agent.name.contains(
"cent")) {
continue
}
println(agent.name)
println(
' - before: ' + agent.getLabelString())
agent.setLabelString(
"cents")
println(
' - after: ' + agent.getLabelString())
}