Mar*_*ler 5 groovy ldap jenkins
我已经为Jenkins中的自助服务部署设置了参数化作业.用户可以选择要部署的应用程序版本和环境.显示给用户的可用环境当前只是一个静态的字符串列表(选择参数).
现在我想基于当前用户的LDAP组限制部署到某些环境.
jenkins中的用户页面显示如下内容:
Jenkins Benutzer Id:maku
团体:
adm_proj_a
nexus_admin
ROLE_ADM_PROJ_XY
ROLE_BH_KK
Run Code Online (Sandbox Code Playgroud)
我如何在groovy脚本中获得这些组?
我尝试使用动态选择参数(scriptler)并使用groovy脚本获取LDAP组,但是没有找到通过Jenkins-API的方法.
任何提示欢迎
我找到了解决方案。以防万一有人感兴趣:
在 scriptler 中,我创建了一个类似于以下内容的 groovy-script 脚本:
import hudson.model.*
def allowed_environments = ["dev","test","test-integration"]
if ("adm_proj_a" in User.current().getAuthorities() )
{
allowed_environments.add("production")
}
return allowed_environments
Run Code Online (Sandbox Code Playgroud)
该脚本由我的 Jenkins-Job 中的动态选择参数(脚本编写器)使用。
现在,只有adm_proj_a组内的用户可以将生产视为一种选择。
User.getAuthorities() 要求调用者具有管理员权限。(http://javadoc.jenkins-ci.org/hudson/model/User.html#getAuthorities())
另一种方法是直接查询 SecurityRealm。
import hudson.model.*
import jenkins.model.*
def userid = User.current().id
def auths = Jenkins.instance.securityRealm.loadUserByUsername(userid)
.authorities.collect{a -> a.authority}
if("adm_proj_a" in auths){
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4135 次 |
| 最近记录: |