2017-01-08 11 views
0

Мы используем стратегию авторизации на основе проектов, и пользователям предоставляется доступ в разделе Управление Jenkins -> Настройка глобальной безопасности -> Авторизация -> Пользователям предоставляются соответствующие обращения.Jenkins Groovy Удалить пользовательский доступ из Стратегии авторизации проекта Matrix

Мы предоставляем пользователям доступ на уровне папок.

Используя ниже код, который я могу удалить пользовательский доступ,

def amp = folder.getProperties().get(AuthorizationMatrixProperty.class) 

def op = amp.grantedPermissions 

// Code to remove permissions for user from Set 

Это прекрасно работает. Но для управления Дженкинс разрешения, я получаю сообщение об ошибке в строке ниже

def amp = Jenkins.instance.getAuthorizationStrategy() 
def op = amp.grantedPermissions 

groovy.lang.MissingPropertyException: No such property: grantedPermissions for class: hudson.security.ProjectMatrixAuthorizationStrategy 

Вопрос в том, как я могу удалить пользователь из Управления настроек Jenkins с помощью Groovy (только)?

Я также посмотрел на javadoc ProjectMatrixAuthorizationStrategy, но не смог найти ничего, что могло бы помочь.

Цените любую помощь по этому вопросу.

ответ

0

Насколько я мог определить, нет единого вызова метода, который удалит пользователя/разрешения из задания. Я написал следующий метод, потому что у меня сотни заданий и удаление старых пользователей занимало много времени. Я успешно использовал следующее на нескольких тестовых заданиях. Я включил расширенный выбор параметры плагина для выбора пользователя, с этим заводным сценарием как «Источник для Value»

import hudson.security.* 
import jenkins.security.* 
import jenkins.model.Jenkins 

def sids = Jenkins.instance.authorizationStrategy.getAllSIDs() 
return sids 

В разделе сборки;

def removeAMP(Job jobName, user) { 
    println jobName.name.center(80,'-') 

    def authorizationMatrixProperty = jobName.getProperty(AuthorizationMatrixProperty.class) 
    Map<Permission,Set<String>> Permissions = authorizationMatrixProperty.getGrantedPermissions() 
    println "Permission Map Before: " + Permissions + cr 
    println "Permission Values: " + Permissions.values() + cr 

    for (Set<String> permissionUsers:Permissions.values()) { 
    permissionUsers.remove(user) 
    } 
    println "Permission Map After: " + Permissions + cr 
    jobName.save(); 
} 

testJobList = [ "TESTJOBA", "TESTJOBB" ] 
testJobList.each { 
jobName = hudson.model.Hudson.instance.getItem(it); 
removeAMP(jobName, user) 

Выходные:

 ------------------------------------TESTJOBA------------------------------------ 
Permission Map Before: [Permission[interface hudson.model.Item,Read]:[bob,fred], Permission[interface hudson.model.Item,ExtendedRead]:[bob,fred], Permission[interface hudson.model.Item,Discover]:[bob,fred], Permission[interface hudson.model.Item,Build]:[bob,fred], Permission[interface hudson.model.Item,Cancel]:[bob,fred], Permission[interface hudson.model.Item,Workspace]:[bob,fred]] 

Permission Values: [[bob,fred], [bob,fred], [bob,fred], [bob,fred], [bob,fred], [bob,fred]] 

Permission Map After: [Permission[interface hudson.model.Item,Read]:[bob], Permission[interface hudson.model.Item,ExtendedRead]:[bob], Permission[interface hudson.model.Item,Discover]:[bob], Permission[interface hudson.model.Item,Build]:[bob], Permission[interface hudson.model.Item,Cancel]:[bob], Permission[interface hudson.model.Item,Workspace]:[bob]] 
+0

Привет Пит, спасибо за обновление, я могу запретить доступ пользователя от уровня работы, но не из Управление Дженкинс -> Настройка глобальной безопасности -> Авторизация -> Пользователи – Vijay