通过groovy脚本在jenkins中设置active-directory插件的“Domain controller”

时间:2017-01-19 15:33:48

标签: jenkins groovy

我正在通过groovy在jenkins中配置active-directory插件,如下所示:

import jenkins.model.*
import hudson.security.*
import hudson.plugins.active_directory.*

def instance = Jenkins.getInstance()
String domain = "MY-DOMAIN.DE"
String site = ""
String server = "my-server:3268"
String bindName = ""
String bindPassword = ""
adrealm = new ActiveDirectorySecurityRealm(domain, site, bindName, bindPassword, server, GroupLookupStrategy.RECURSIVE)
instance.setSecurityRealm(adrealm)

有效。但是“域控制器”没有设置。

enter image description here

我希望,“服务器”会设置它,但不是。 如何通过groovy脚本设置它?

1 个答案:

答案 0 :(得分:2)

构造函数的向后兼容性失败,请使用最新的构造函数(更多https://issues.jenkins-ci.org/browse/JENKINS-39676):

 @DataBoundConstructor
    // as Java signature, this binding doesn't make sense, so please don't use this constructor
    public ActiveDirectorySecurityRealm(String domain, List<ActiveDirectoryDomain> domains, String site, String bindName,
                                        String bindPassword, String server, GroupLookupStrategy groupLookupStrategy, boolean removeIrrelevantGroups, Boolean customDomain, CacheConfiguration cache) {

示例:

import hudson.plugins.active_directory.* 
import jenkins.model.*

def instance = Jenkins.getInstance();
def ActiveDirectoryDomain adDomain = new ActiveDirectoryDomain("Example_Domain_Name_2", "Example_Domain_Controller_2");
def domains = new ArrayList<ActiveDirectoryDomain>();
domains.add(adDomain);

def securityRealm = new ActiveDirectorySecurityRealm( 
"", 
domains,
"", 
"",
"",  
"", 
GroupLookupStrategy.RECURSIVE,
false,
true,
null)
println(securityRealm.domains)

instance.setSecurityRealm(securityRealm) 
instance.save()

适合我!