一、jenkins的安装
这里不介绍jenkins安装,如有需要推荐以下文章:
jenkins搭建:docker搭建jenkins
jenkins使用:jenkins实现持续集成、持续部署
权限的基础知识,可以看下这篇文章回忆下:
权限基础:权限管理需要哪些表
二、jenkins中实现用户的权限分离
刚用jenkins时肯定会有一个困惑,jenkins里创建的用户并不能实现权限分离,所有用户进来以后看到的内容都是一样的,这样肯定不行,jenkins的用户有测试、有开发、有运维,自然不能让所有人看到的东西都是一样的,那么用户的权限分离就是必须的了。
jenkins自然原生不支持,我们就需要引入外部插件了,也就是这个插件:Role-based Authorization Strategy,下面一起安装下吧
1.安装插件
系统管理–>插件管理–>可选插件,然后按照该插件即可(插件安装完成后重启jenkins才会生效)
2.设置角色
插件装完后,会在系统管理里多出以下这个管理项:
下面点击“Manage Role”就可以创建角色了,创建角色之前需要声明一点,这个插件的角色和一般的权限分离有些区别,主要是这里的角色分两种,一种是全局角色,一种是明细角色。全局角色控制是否可以全局查看,明细角色则控制所能看到的job明细,在为一个用户分配角色时,这连个角色都是要有的。废话不多说来一起试一下就知道了。
1).创建一个全局角色
创建全局角色 develop,并只分配全局的read权限
2).创建一个明细角色
创建明细角色 develop-sit ,并使用正则控制该角色只能查看以SIT结尾的job
3.为用户配置角色
(这里不展示创建用户了)我们为mdmdev用户分配全局角色develop,为mdmdev分配明细角色develop-sit:
这样角色就分配完了,登录mdmdev账号看看是不是只有以SIT结尾的job可以看到,其他的就看不到了呢,如下所示:
可以发现,权限分离已经成功了。
三、碰到的过的问题
1.global roles 与 Item roles 的区别和使用
上面的动作完成后可能就会有这种疑问,全局角色与明细角色的差别到底在哪里呢,笔者感觉全局角色控制的只是全局的信息展示,但是涉及到明细的权限还是必须得用明细角色来控制,这就像一种补充,至于为什么这么设计,可能是为了实现对jenkins某些东西的兼容吧,不然也不会设计的这么丑陋了。
2.Item roles 创建时的pattern里的正则如何写
笔者上面的例子是某角色只展示某种特定结尾的job,pattern这么写即可:.*SIT,其中SIT是job的特定结尾,不过若是job都是以特定开头来命名的呢,此时我们的pattern就需要这么写了:SIT.星号,其中SIT就是我们特定的开头,星号就是我们正则里的星号了,这里使用汉字代替了(忘记这里的转义符了,就这么写吧)。