我使用LDAP插件在Jenkins中配置Ldap。
我想在列出所有ldap组的作业中添加一个参数。
Groovy将是获取ldap goups的最简单方法。
如何使用?
Jenkins.instance.securityRealm.loadGroupByGroupname(name)
答案 0 :(得分:0)
如果只需要从Jenkins实例中提取所有ldap组,则应获取所有现有用户,然后为每个用户提取所有组(权限)。 Jenkins将ldap组存储在每个用户对象上。
def users = User.getAll()
def ldap_groups = [:]
users.each { user ->
//get all properties for each user
user.getAllProperties().each { prop ->
//if prop jenkins.security.LastGrantedAuthoritiesProperty exists
if (prop.class.canonicalName == "jenkins.security.LastGrantedAuthoritiesProperty") {
//extract all ldap groups (authorities)
prop.getAuthorities().each { group ->
//populate dictionary with groups and users
if (ldap_groups.containsKey(group)) {
ldap_groups[group] += [user.getId()]
} else {
ldap_groups[group] = [user.getId()]
}
}
}
}
}
//result
ldap_groups.each { g, u ->
println "Group: " + g
print "Users:"
u.each {
println "\t" + it
}
}
println ""