Как ограничить людей производственным развертыванием с использованием Jenkins RoleBasedAuthorizationStrategy? - PullRequest
0 голосов
/ 03 апреля 2020

Я уже установил и настроил RoleBasedAuthorizationStrategy. Я пытаюсь ограничить людей на основе globalRoles. У меня есть роль Prod, и в этой роли у меня есть список людей, ответственных за развертывание Prod. Также у меня есть роль admin, которая содержит список администраторов.

У меня есть глобальная библиотека Jenkins, которая должна ограничивать людей на основе библиотеки.

def trigerUser = 'fsadykov'
def environment = "prod" 
def prodRole = ["user1", "user2", "user3"]


if (trigerUser in prodRole ) {
    println("You are allowed to do prod deployments!!")
} else {
    if (environment != 'prod') {
        println("You are alowed to do this trigger")
    } else {
        println("You are not allowed to do prod deployments!!")
    }
}

Как я могу получить список людей из Дженкинс? Мне нужен какой-то пример, чтобы получить людей из prodRole

Я провел исследование, и оказалось, что я могу сделать вызов API ниже конечной точки, но я думаю, что это должен быть простой способ получить этот список, используя RoleBasedAuthorizationStrategy класс для получения

Конечная точка: role-strategy/strategy/getRole?type=globalRoles&roleName=prodTeam

1 Ответ

0 голосов
/ 03 апреля 2020

На данный момент мне удалось решить эту проблему, проверив доступ администратора с помощью следующего сценария. Это не идеально, но пока работает. Было бы здорово, если бы мы могли проверять по c глобальному участнику роли

import hudson.model.Hudson
import com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy    


def isAdmin(username) {
    def instance = Jenkins.getInstance()
    return instance.getAuthorizationStrategy().getACL(User.get(username))
    .hasPermission(User.get(username).impersonate(), hudson.model.Hudson.ADMINISTER)
}


def trigerUser = 'fsadykov'
def environment = "prod" 

if (isAdmin(trigerUser)) {
    println("You are allowed to do prod deployments!!")
} else {
    println("You are not allowed to do prod deployments!!")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...