当前位置: 首页 > 面试题库 >

Jenkins可扩展选择,根据用户角色提供用户特定的项目

仲孙磊
2023-03-14
问题内容

我有一种情况,我想在Jenkins参数化的版本中更改选择参数的内容。

就我而言,我想要一个用于部署应用程序“ Deploy My
App”的项目。在构建该项目时,将为用户提供一个选择参数。我想根据用户角色更改此列表的内容。例如,具有“
dev_deploy”角色的人将能够看到开发环境,而具有“ test_deploy”角色的人将能够看到测试环境等。

我当前正在使用可扩展选择参数插件和基于角色的授权策略插件。

我知道我可以编写一些棘手的脚本来生成供选择的列表项。

def result = ["-------"]

def roles=??????

if(roles.get('dev_deploy') {
    //Add dev environments
    result.add('dev1')
    ....
}
if(roles.get('test_deploy') {
    //Add test environments
    result.add('test1')
    ....
}

return result

我只是不知道该由谁来担任用户角色?

有谁知道我该怎么做,或者对问题有不同的解决方案?

非常感谢


问题答案:

好的,再经过几次搜索后,我发现了源代码(https://github.com/jenkinsci/role-strategy-
plugin/tree/master/src/main/java/com/michelin/cio/hudson/plugins/rolestrategy

经过进一步的阅读和一些玩耍之后,我想到了这个…

import com.michelin.cio.hudson.plugins.rolestrategy.*

def result = ["-- Please Select --"]
def authStrategy = jenkins.model.Jenkins.instance.getAuthorizationStrategy()

if(authStrategy instanceof RoleBasedAuthorizationStrategy){
    def currentUser = jenkins.model.Jenkins.instance.getAuthentication().getName();
    def roleMap= authStrategy.roleMaps.get("globalRoles")

    def sids= roleMap.getSidsForRole("Manage_Dev")
    if(sids != null && sids.contains(currentUser)) {
        result.add("dev1")
        ...
    }

    sids= roleMap.getSidsForRole("Manage_Test")
    if(sids != null && sids.contains(currentUser)) {
        result.add("tst1")
        ...
    }
    ...
}

return result

哪个对我有用。当您知道如何时就轻松!



 类似资料:
  • 使用spring webmvc和spring security web 3.2版,我希望根据用户角色(或用户是否经过身份验证)返回不同的视图,以便对于请求,角色匿名用户(或未经身份验证的用户)获得欢迎页面,角色用户用户获得主页。 我目前的做法是使用常规控制器: 然而,我并不喜欢它,因为我觉得这个重定向应该用SpringSecurity来完成(我错了吗?)。您知道使用Spring Security配

  • 登录帧 菜单框架

  • 如何配置Keycloak以使用特定的OIDC-client进行身份验证,但如果用户没有特定的角色,则返回失败的身份验证?

  • 我确实有一些独特的要求,我想隐藏要从特定角色用户中选择的角色。 例如,我有一个角色名称admin、部门1、部门2和部门3。作为管理员,我应该只能在门户中看到部门1、部门2和部门3的角色管理。 但如果我为管理员定义权限,他/她可以管理角色。管理员用户可以查看Liferay中可用OOTB的所有角色。 有人能帮我配置一下吗?

  • 问题内容: 也许这是一个简单的问题,也许不是。我有一个选择框,在其中我用宽度进行硬编码。说120像素。 我希望能够显示第二个选项,以便用户可以看到文本的完整长度。 像其他一切一样。这在Firefox中可以正常工作,但不适用于Internet Explorer6。 问题答案: 如果您可以使用固定方式中预先存在的选项,而又不想通过编程方式更改宽度,那么除非有一点创意,否则可能会很不幸。 您可以尝试将属

  • 我有3个用户角色:管理员、客户和员工。 登录后,每个角色将重定向到特定的仪表板,例如:-管理员:网站。com/admin-客户:网站。com/客户-员工:网站。通讯员/雇员 此时,无论我使用哪个用户角色,都可以通过这些网址访问所有内容。 限制客户打开admin的最简单方法是什么 Laravel版本5.2.45 PHP版本7.2我正在使用共享托管提供商。谢谢你们