我有一种情况,我想在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
哪个对我有用。当您知道如何时就轻松!