Jenkins工作更新权限

时间:2017-11-23 15:14:42

标签: jenkins groovy

我有一个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和其他一些类没有被加载。如何让上述脚本在作业中工作?

谢谢!

1 个答案:

答案 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添加策略。