【问题标题】:Jenkins Job to Update PermissionsJenkins 更新权限的工作
【发布时间】:2017-11-23 15:14:42
【问题描述】:

我有一个配置了“基于项目的矩阵授权策略”(ProjectMatrixAuthorizationStrategy) 的 Jenkins。我想从 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 中的某些类和其他类未加载。我怎样才能让上面的脚本在工作中工作?

谢谢!

【问题讨论】:

    标签: jenkins groovy


    【解决方案1】:

    虽然我还没有找到引用其他插件类的方法,但我确实找到了一种解决方法(尽管它是有限的)。感谢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 添加策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多