我有一个Jenkins配置了基于项目的矩阵授权策略' (ProjectMatrixAuthorizationStrategy)。我想管理Jenkins作业的全局权限,该作业运行一个groovy脚本从Git读取JSON文件,然后添加或删除AD组。
到目前为止,我的尝试因以下错误而失败:
33:无法解析类ProjectMatrixAuthorizationStrategy @第33行,第29栏。 def authorizationStrategy = new ProjectMatrixAuthorizationStrategy()
import jenkins.*
import hudson.*
import com.cloudbees.plugins.credentials.*
import com.cloudbees.plugins.credentials.common.*
import com.cloudbees.plugins.credentials.domains.*
import com.cloudbees.jenkins.plugins.sshcredentials.impl.*
import hudson.plugins.sshslaves.*;
import hudson.model.*
import jenkins.model.*
import hudson.security.*
def strategy = new ProjectMatrixAuthorizationStrategy()
strategy.add(Jenkins.ADMINISTER, "me123")
def instance = Jenkins.getInstance()
instance.setAuthorizationStrategy(strategy)
instance.save()
从http://jenkins/script运行时,上述工作正常,但从指向groovy文件的作业运行时失败。
我确定问题是因为ProjectMatrixAuthorizationStrategy和其他一些类没有被加载。如何让上述脚本在作业中工作?
谢谢!
答案 0 :(得分:0)
虽然我还没有找到引用其他插件类的方法,但我确实发现了一种解决方法(尽管它有限制)。感谢this source我找到了一条路。
使用以下内容,我可以获得现有ProjectMatrixAuthorizationStrategy的实例。在Groovy中不需要强制转换它,这有助于显式转换按照问题抛出运行时错误。
def instance = Jenkins.getInstance()
def strategy = instance.getAuthorizationStrategy()
要创建一个新实例,我可以这样做:
def newStrategy = strategy.class.newInstance()
Jenkins.core固有的其余部分。
newStrategy.add(Jenkins.ADMINISTER, archeusSystemAccount)
instance.setAuthorizationStrategy(newStrategy)
instance.save()
最后的想法,根据您在Jenkins中安装的插件,您可能希望为用户/组添加其他ACL。由于我还没有弄清楚如何从插件中导入类,我只能为Jenkins,Item,Computer和View添加策略。