Jenkins利用Role-based Authorization Strategy插件管理项目权限
公司需求
之前给安卓组搭建了一个给 Jenkins打包APP的工具。
最初的权限使用的是【项目矩阵授权策略】。这种只能给某个角色配置 针对 【项目】、【构建项目】、【视图】等的读、操作、删除等操作。不能精确某些指定的 【项目】。这也正是公司提给我的需求,让我给某些用户设置 只能 操作 某些 项目 的权限,比如,xiaowu(小吴同学,安卓 ,测试组),只能对 安卓的项目进行构建相关的操作,不能修改这些的项目配置、删除,也不能修改 IOS 组的 东西。
配置方法:Manage Jenkins -> Configure Global Security -> 选择 【项目矩阵授权策略】
注意:一定要记得给管理员账号设置下权限。意思就是底下列表里,必须有个是管理员账号。否则有可能会导致唯一的一个管理员账号因为没有配置权限,退出系统再登录时,发现自己没权限干事情,唉,那真的是尴尬。
解决办法
(1)插件安装
Jenkis本身没有满足需求的 配置权限 , 不过有插件可以安装 ,【Role-based Authorization Strategy】
Manage Jenkins -> Manage Plugins -> 可更新 或者 已安装 列表 ,确认下,是否有该 插件。
如果没有记得安装。安装后记得重启下Jenkins服务才生效哦~
我在【已安装】列表里发现了它,话说我也不知道啥时候装的,哈哈~ 可能是Jenkins 安装的时候 吧~记得有一个过程就是 安装插件。
(2)插件应用
Manage Jenkins -> Configure Global Security -> 访问控制 -> 授权策略 -> 选择 【Role-Based Strategy】
注意:切换了授权策略的话,之前的授权配置将会被清空的,建议先截图保存一份。免得要撤回去!!!
(3)管理角色
Manage Jenkins -> Manage and Assign Roles -> Manage Roles
常用【Global roles】全局权限, 【Project roles】项目权限
注意:【Global roles】 就是针对所有的对象。如果你在这里给与了 所有Job 的Build权限,然后又在 【Project roles】 指定了 部分(an开头的) 项目的Job的Build权限,则会取 【Global roles】配置,所以最终还是 会 全部项目都可以 Build。
Pattern 的填写规则:
其实就是 正则表达式 。匹配的是项目名。 这里填写 的【an.】,其中点表示任意字符, 表示任意个 , 所以最终匹配的是 项目名前2 个字符是an 的。双击 那个 Pattern ,可以弹出匹配项。如果想多个表达式,可以使用【|】竖线分割就好啦。例如: (an.)|(B.) 则可以匹配开头 an 或者 开头为 B 的项目啦。
(4)分配权限给角色
(5)验证
【xiaowu】登录成功,只能看见 一个android2的项目,并且也只能 构建的基本权限。
本人的最终配置Sample
由于之前分配账号的时候,都是按照个人来分配的,方便 查看每个账号的动作。大概根据我司的需求,我最后大概就是如下图配置了。