我有一种情况,我想在 Jenkins 参数化构建中更改选择参数的内容。
就我而言,我想要一个用于部署应用程序“部署我的应用程序”的项目。在构建这个项目时,用户会看到一个选择参数。我想根据用户角色更改此列表的内容。即具有“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
Run Code Online (Sandbox Code Playgroud)
我只是不知道谁来掌握用户角色?
任何人都知道我该怎么做,或者对问题有不同的解决方案?
非常感谢
好的,经过几次搜索后,我发现了源代码(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
Run Code Online (Sandbox Code Playgroud)
这对我有用。当你知道怎么做时就很容易了!
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |