我有 Jenkins 作业,它带有名为 Computer 的事件选择参数。 我应该编写哪个 groovy 脚本来获取所有节点名称,并且只为当前登录用户显示一个? 所有节点都带有标签 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
更新(登录用户的完整答案,基于以下答案):
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
最佳答案
试试这个:
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
或者让它成为 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 }
关于jenkins - 如何将 Jenkins 节点列表添加到事件选择参数中,并只为当前登录用户显示这些节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69868185/