java 如何在jenkinsfile中将RoleBaseStrategy插件中具有管理员角色的用户的角色设置为groovy?

cpjpxq1n  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(109)

我已经使用RoleBaseStrategy插件。我有这个块代码在我的Jenkinsfile:

def authStrategy = Jenkins.instance.getAuthorizationStrategy()
permissions = authStrategy.roleMaps.inject([:]){map, it -> map + it.value.grantedRoles}
Roles = permissions.findAll{ it.value.contains(RUNNER_USER) }.collect{it.key.name}

  if("admin" in Roles) {
    timeout(time: TIMEOUT, unit: 'SECONDS') {
      input(message: "Do you want to overwrite the lock?", ok: "Yes")
    }
  println "job finished"

最后,我得到了角色列表,但对于authstrategy函数,我得到了此错误和
导致:java.io.非序列化异常:com.michelin.cio.哈德逊.插件.角色策略.基于角色的授权策略
它让我的管道无法正常工作我做错了什么?

bmp9r5qi

bmp9r5qi1#

尝试将groovy逻辑移到外部函数中。

def getRoles() {
   def authStrategy = Jenkins.instance.getAuthorizationStrategy()
   permissions = authStrategy.roleMaps.inject([:]){map, it -> map + it.value.grantedRoles}

   return permissions.findAll{ it.value.contains(RUNNER_USER) }.collect{it.key.name}

}

在管道中

if("admin" in getRoles()) {
    timeout(time: TIMEOUT, unit: 'SECONDS') {
      input(message: "Do you want to overwrite the lock?", ok: "Yes")
}

相关问题