一、前言

Jenkins是个好东西,开发运维测试的老江湖应该都听过,在此我就不再多做介绍jenkins是个什么东西了。

jenkins自身的权限管理,无法实现用户指定显示视图或者视图中指定的jobs,之前分配的jenkins帐号是拥有所有权限的,因为担心故意或者误删job的情况。 我们使用jenkins自身的权限控制,而实现的效果用户只能构建,不能查看修改配置和删除job。虽然避免了故意或者失误删除job的情况,但是有时候开发需要修改配置,比如说更改构建的分支,或者想查看构建的参数,脚本就需要叫运维协助。对开发来说比较麻烦,对运维也很苦恼。

1、解决方法

为jenkins安装角色策略插件,通过配置角色策略可以解决上面问题。

  1. 每个项目分配两个账号,一个账号可以查看job配置,修改配置,构建新的权限,不能删除,不能创建job,另一一个账号只有构建权限。
  2. 不同项目组账号登录之后,jenkins视图只显示自己项目组的job。

2、规划

我们假设我们有两个项目组,分别是b和q,每个项目组两个账号,分别是 btest,badmin,qtest,qadmin。

项目 用户 权限 视图 角色
b badmin 修改,查看,构建等 b badmin
b btest 只构建 b buser
q qadmin 修改,查看,构建等 q qadmin
q qtest 只构建 q quser

二、配置

1、安装插件

系统管理--->管理插件。

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

2、全局安全配置

系统管理--->全局安全配置。

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

3、创建用户

系统管理--->管理用户

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

4、创建角色

系统管理--->Manage and Assign Roles
持续集成之 Jenkins 配置基于角色的项目权限管理(五)

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

1、创建一个Global roles

我们先创建一个全局角色user,赋予全局标签下面的Read权限。

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

2、创建规划项目的角色

分别创建两个项目的角色,按照规划的分配权限,Pattern用于给项目匹配 job,使用正则表达式。

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

5、给用户分配角色

系统管理--->Manage and Assign Roles--->Assign Roles

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

6、创建项目视图

我这里只展示创建其中一个视图,另一个方式一样。
持续集成之 Jenkins 配置基于角色的项目权限管理(五)

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

三、登录验证

1、创建 job

因为创建的账号都没有赋予创建job的权限,所以我们先使用最高的管理账户创建几个job,具体如下:

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

2、项目隔离验证

我们分别登录 btest 和 qtest 这两个账号,分别查看一下各自账号下面可以查看到的 job。

btest

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

qtest

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

我们可以看到,隔离成功,不同的项目值可以看到各自的 job。

3、权限验证

我们分别登录 badmin 和 btest ,查看其权限。

badmin

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

btest

持续集成之 Jenkins 配置基于角色的项目权限管理(五)

我们可以看到,各自看到的权限就是我们在角色里面赋予的权限,没有问题。