ari*_*lma 3 groovy jenkins jenkins-plugins
我有 Jenkins 工作,其主动选择参数的名称为“计算机”。我应该编写哪一个常规脚本来为我提供所有节点名称,并仅显示当前登录用户的节点名称?所有节点都带有标签“Desktop”。我尝试了以下方法,但它不起作用:
import hudson.slaves.DumbSlave
def users = []
for (DumbSlave it : Hudson.instance.getSlaves()) {
if(it.getLabelString().contains("Desktop")) {
def currAgent = it?.computer?.name
if(currAgent != null) {
users.add(currAgent)
}
}
}
return users
Run Code Online (Sandbox Code Playgroud)
更新(登录用户的完整答案,基于以下答案):
import jenkins.model.*
import hudson.model.User
def users = []
Jenkins.instance.nodes.each { node ->
if(node.labelString.contains("Desktop")) {
def currAgent = node?.computer
def currAgentName = node?.computer?.name
if(currAgentName != null) {
def user = currAgent.systemProperties['user.name']?.toLowerCase()
if (!users.contains(user) && user==User.current().toString()){
users.add(currAgentName)
}
}
}
}
return users
Run Code Online (Sandbox Code Playgroud)
尝试这个:
import jenkins.model.*
def users = []
Jenkins.instance.nodes.each { node ->
if(node.labelString.contains("Desktop")) {
def currAgent = node?.computer?.name
if(currAgent != null) {
users.add(currAgent)
}
}
}
return users
Run Code Online (Sandbox Code Playgroud)
或者让它变得更加 Groovyer:
import jenkins.model.*
return Jenkins.instance.nodes.findAll { node ->
node.labelString.contains("Desktop") &&
node.computer.systemProperties["user.name"] == User.current().toString()
}.collect { node ->
node?.computer?.name }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |