如何在Jenkins Groovy中获取ldap组

时间:2016-11-28 12:24:21

标签: jenkins groovy ldap

我使用LDAP插件在Jenkins中配置Ldap。

我想在列出所有ldap组的作业中添加一个参数。

Groovy将是获取ldap goups的最简单方法。

如何使用?

Jenkins.instance.securityRealm.loadGroupByGroupname(name)

1 个答案:

答案 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 ""