我对这个问题很生气,我不知道如何解决它。
我们正试图从Windows Central存储库中的钩子触发Jenkins构建。这实际上是在旧的Jenkins服务器(LTS 1.580.1)上运行。
我们以前的方式是使用存储在文件中的SSH私钥调用Jenkins CLI。
这是奇怪的事情:
C:\ Users \ Username \ jenkins> java -jar jenkins-cli.jar -s http://hostname:8080 -i ci.key list-jobs
hudson.security.AccessDeniedException2: jenkins_ci is missing the Overall/Read permission
at hudson.security.ACL.checkPermission(ACL.java:58)
at hudson.model.Node.checkPermission(Node.java:417)
at hudson.cli.CLICommand.main(CLICommand.java:236)
at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:92)
at sun.reflect.GeneratedMethodAccessor345.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:320)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:295)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:254)
at hudson.remoting.UserRequest.perform(UserRequest.java:121)
at hudson.remoting.UserRequest.perform(UserRequest.java:49)
at hudson.remoting.Request$2.run(Request.java:324)
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)
jenkins_ci用户是一个Active Directory服务帐户,主要用于处理所有内容。在Jenkins安全矩阵中,我拥有与此服务帐户相同的权限。
当我使用我的ssh键并运行完全相同的命令时,它就像一个魅力。
如果我跑谁,我说它" jenkins_ci"但是,如果我更改匿名权限,那么jenkins_ci开始工作。 它似乎没有读取已定义的用户权限,而是使用匿名用户权限。
任何想法如何使它工作?这个是我应该向Jenkins报告的错误还是我错过了什么?
谢谢!
答案 0 :(得分:1)
好的,经过数小时和数小时的工作,我有了一个很快乐的想法"它起作用了。
我们的Jenkins使用LDAP对Active Directory进行身份验证。
不知何故,Jenkins(及其用户文件夹)创建的用户是: " jenkins_ci" (小写)和我们的Active Directory帐户" JENKINS_CI" (大写)。
似乎Jenkins的安全性区分大小写。
我停止了Jenkins,删除了主机上的用户文件夹,刚刚启动了Jenkins。 新文件夹现在称为JENKINS_CI,现在CLI正在运行。
答案 1 :(得分:0)
java -jar jenkins-cli.jar -s http://server get-job myjob> myjob.xml
我可以使用以下链接
运行以上命令https://wiki.jenkins-ci.org/display/JENKINS/Disable+security