2016-02-07 3 views
0

Я работаю над настройкой Active Directory через Groovy. Я смог пройти аутентификацию через активный каталог через интерфейс, означающий порты, и аутентификация не является проблемой. я следующее на основе плагина LDAP:Jenkins: настройка авторизации AD Plugin с Groovy

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

String domain = 'my.domain.com' 
String site = '' 
String server = '192.168.1.1' 
String bindName = '[email protected]' 
String bindPassword = 'password' 

SecurityRealm ad_realm = new ActiveDirectorySecurityRealm(domain, site, bindName, bindPassword, server) 
jenkins.instance.setSecurityRealm(ad_realm) 

Это ошибка:

ERROR: jenkins_script[add_active_directory] (jenkins_wrapper::ldap line 32) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '255' 
    ---- Begin output of "/opt/java/latest/bin/java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 groovy /tmp/groovy20160208-28479-azdr83 ---- 
    STDOUT: 
    STDERR: groovy.lang.MissingPropertyException: No such property: jenkins for class: RemoteClass 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50) 
    at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231) 
    at RemoteClass.run(RemoteClass:16) 
    at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266) 
    at groovy.lang.GroovyShell.run(GroovyShell.java:517) 
    at hudson.cli.GroovyCommand.run(GroovyCommand.java:86) 
    at hudson.cli.CLICommand.main(CLICommand.java:237) 
    at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:92) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:608) 
    at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:583) 
    at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:542) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:120) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
    at hudson.remoting.Request$2.run(Request.java:326) 
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) 
    at hudson.cli.CliManagerImpl$1.call(CliManagerImpl.java:63) 
    at hudson.remoting.CallableDecoratorAdapter.call(CallableDecoratorAdapter.java:18) 
    atorList.java:21) 
    at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Любое представление об этой ошибке?

ОБНОВЛЕНО

Новый код

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

    def instance = Jenkins.getInstance() 
    String domain = 'my.domain.com' 
    String site = '' 
    String server = '1.2.3.4' 
    String bindName = '[email protected]' 
    String bindPassword = '#{bind_password}' 
    adrealm = ActiveDirectorySecurityRealm(domain, site, bindName, bindPassword, server) 
    instance.setSecurityRealm(adrealm) 

Новая ошибка

STDERR: groovy.lang.MissingMethodException: No signature of method: RemoteClass.ActiveDirectorySecurityRealm() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) values: [my.domain.com, , [email protected], ...] 
      at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55) 
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78) 
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46) 
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) 
      at RemoteClass.run(RemoteClass:15) 
      at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266) 
      at groovy.lang.GroovyShell.run(GroovyShell.java:517) 
      at hudson.cli.GroovyCommand.run(GroovyCommand.java:86) 
      at hudson.cli.CLICommand.main(CLICommand.java:237) 
      at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:92) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:497) 
      at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:608) 
      at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:583) 
      at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:542) 
      at hudson.remoting.UserRequest.perform(UserRequest.java:120) 
      at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
      at hudson.remoting.Request$2.run(Request.java:326) 
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) 
      at hudson.cli.CliManagerImpl$1.call(CliManagerImpl.java:63) 
      at hudson.remoting.CallableDecoratorAdapter.call(CallableDecoratorAdapter.java:18) 
      at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21) 
      at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
      at java.lang.Thread.run(Thread.java:745) 
+0

попробуйте добавить «импорт hudson.plugins.active_directory. *» –

+0

@ JérémieB добавляется строка, и я получаю ту же ошибку – jsmickey

+0

Не могли бы вы показать код RemoteCl жопа? (особенно строка 16) –

ответ

2

Так со всеми новыми дополнениями от предложений,

Try:

adrealm = новый ActiveDirectorySecurityRealm (домен, сайт, bindName, bindPassword, сервер)

+0

adrealm = new ActiveDirectorySecurityRealm (домен, сайт, имя_связала, bindPassword, сервер) Ошибка: STDERR: org.codehaus.groovy .control.MultipleCompilationErrorsException: сбой при запуске: RemoteClass: 15: не удалось разрешить класс ActiveDirectorySecurityRealm @ строка 15, столбец 11. – jsmickey

+0

Итак, «сайт» не может быть нулевым ... это должно иметь значение. Я смог запустить этот код, и он сработал. Кроме того, вам не нужно импортировать все из этих классов:. 'импорт jenkins.model * импорт hudson.security * импорт hudson.plugins.active_directory * четкости экземпляр = Jenkins.getInstance (..) Строка домена = 'my.domain.com' Строка сайта = 'сайт' Строка сервера = '1.2.3.4' Строка bindName = '[email protected]' Строка bindPassword = «# {bind_password } ' adrealm = new ActiveDirectorySecurityRealm (домен, сайт, имя_иннеста, bindPassword, сервер) instance.setSecurityRealm (adrealm) ' – Adam

+0

Это сработало, спасибо – jsmickey

0

Вы не создали объект Дженкинс. Я думаю, как правило, вы бы что-то вроде четкости у = Jenkins.getInstance() j.setSecurityRealm (ad_realm)

+0

Спасибо за ответ, попробовал ваше предложение и получил другую ошибку, которую я добавил выше – jsmickey

Смежные вопросы