本文将介绍怎样配置jenkins,使其能够支持基于角色的项目权限管理。

因为jenkins默认的权限管理体系不支持用户组或角色的配置,因此须要安装第三发插件来支持角色的配置。本文将使用Role Strategy Plugin,介绍页面:https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin

一、配置插件

安装插件后。进入系统设置页面,配置例如以下:

官网上安全域设置为Servlet容器代理,实际操作发现Jenkins专实用户数据库也是能够的。

二、配置权限

在系统管理页面点击Manage and Assign Roles进入角色管理页面: 

1、管理角色(Manage Roles)

选择该项能够创建全局角色、项目角色,并能够为角色分配权限。

如上图,分别创建了admin、test两个全局角色。baifei一个项目角色。

此处一定注意:全局角色admin不能删除。且必须在全局角色中创建一个仅仅有Overall/Read的角色。这个角色是分配给以下的项目角色使用的,否则。分配了项目角色的用户登录后会提示“ username is missing the Overall/Read permission”

项目角色与全局角色的差别就是,项目角色仅仅能管理项目。没有管理jenkins的权限配置。

加入项目角色时,须要制定匹配项目的模式。如上图中的Pattern,官方文档介绍该选项支持正則表達式,如“Roger-.”表示全部以Roger-开头的项目,“(?i)roger-.*”表示以roger-开头的项目而且不区分大写和小写。如以ABC开头的项目能够配置为“ABC|ABC.*”。也能够使用“abc|bcd|efg”直接匹配多个项目。

2、创建用户

在分配角色之前须要先创建用户。

在系统管理页面,点击管理用户:

点击新建使用者能够创建新用户,假设之前有项目与scm版本号管理系统(如svn、git等)连接并获取源代码构建过,jenkins会从svn中读取到一些用户信息,能够在查看用户菜单中看到这些用户:

点击用户id或名称都能够改动用户信息。

3、分配角色(Assign Roles)

选择Assign Roles能够为用户分配所属角色。能够分配全局角色和项目角色。

注意此处:必须给角色baifei分配全局角色test。否则。分配了项目角色baifei的用户登录后会提示“ username is missing the Overall/Read permission”。

在版本号1.653中,依照上面的设置了用户。但仍然提示“

username is missing the Overall/Read permission”,重新启动jenkins所在的tomcat服务后问题攻克了,不知是否是jenkins的bug。

如上图。将不同的用户分别分配给不同的角色。这样用户就能够具有角色所拥有的权限。

三、深入了解

该插件从2011年10月公布1.1.2版本号后就不再维护了,因此会有一些小问题。但不影响使用,比方在分配角色后点击保存button时有可能会发生异常,浏览器点击后退button后又一次提交就能够操作成功。

另外假设配置失败导致不能登录。能够通过改动配置文件恢复初始设置。

首先了解一下配置文件。

进入jenkins安装文件夹。用户配置信息和角色配置信息都以配置文件的形式存储。

上图中users目录存放了各个用户的配置信息,每一个用户都会创建与username同样的目录。目录中包括config.xml文件,配置示比例如以下:

admin

EfowsOP9H5arYxMmuFrbPjjITgu/fjtvHib5okFJ9DmPTu/088cvHxlE9RHwVv+S

All

false

false

false

uAEYii:02e0cd0d78abf90e42b28e7d3d4fe64776ae8fa9500e379f2598cc65e1b0fb70

gaoliang@esrichina.com.cn

角色配置在$Jenkins_home/config.xml文件里。示比例如以下:

true

hudson.model.Hudson.Read

hudson.model.Hudson.Administer

hudson.model.View.Delete

hudson.model.Computer.Create

hudson.model.Computer.Delete

hudson.model.Hudson.RunScripts

hudson.model.View.Read

hudson.model.Run.Update

hudson.model.Item.Workspace

hudson.model.Computer.Connect

hudson.model.Computer.Configure

hudson.model.Item.Cancel

hudson.model.Item.Configure

hudson.model.Item.Discover

hudson.model.Item.Create

hudson.model.View.Configure

hudson.model.Computer.Disconnect

hudson.model.Item.Delete

hudson.model.Item.Read

hudson.model.Item.Build

hudson.model.Run.Delete

hudson.model.View.Create

hudson.scm.SCM.Tag

admin

hudson.model.Hudson.Read

anonymous

hudson.model.Item.Read

hudson.model.Item.Build

hudson.model.Run.Delete

hudson.model.Item.Workspace

hudson.model.Run.Update

hudson.scm.SCM.Tag

hudson.model.Item.Cancel

hudson.model.Item.Discover

caox

wangwh

yuh

chenjj

lim

zhangy

hudson.model.Item.Delete

hudson.model.Item.Read

hudson.model.Item.Build

hudson.model.Run.Delete

hudson.model.Item.Workspace

hudson.model.Run.Update

hudson.scm.SCM.Tag

hudson.model.Item.Cancel

hudson.model.Item.Configure

hudson.model.Item.Discover

wangwh

false

false

假设发生用户不能登录的情况,能够尝试下面几种方法解决

1、方法1

删除用户相关的文件夹

改动$Jenkins_home/config.xml文件:false

删除authorizationStrategy、securityRealm节点

又一次启动Jenkins

使用该方法将删除Jenkins的权限管理,恢复成为初始状态。

2、方法2

改动$Jenkins_home/config.xml文件。改动授权方式为系统自带的安全矩阵方式

authorizationStrategy节点class属性改动为hudson.security.GlobalMatrixAuthorizationStrategy

配置示比例如以下,该演示样例是分配给admin用户全部权限

true

hudson.model.Computer.Configure:admin

hudson.model.Computer.Connect:admin

hudson.model.Computer.Create:admin

hudson.model.Computer.Delete:admin

hudson.model.Computer.Disconnect:admin

hudson.model.Hudson.Administer:admin

hudson.model.Hudson.Read:admin

hudson.model.Hudson.Read:anonymous

hudson.model.Hudson.RunScripts:admin

hudson.model.Item.Build:admin

hudson.model.Item.Cancel:admin

hudson.model.Item.Configure:admin

hudson.model.Item.Create:admin

hudson.model.Item.Delete:admin

hudson.model.Item.Discover:admin

hudson.model.Item.Read:admin

hudson.model.Item.Workspace:admin

hudson.model.Run.Delete:admin

hudson.model.Run.Update:admin

hudson.model.View.Configure:admin

hudson.model.View.Create:admin

hudson.model.View.Delete:admin

hudson.model.View.Read:admin

hudson.scm.SCM.Tag:admin

false

false

又一次启动Jenkins

使用该方法Jenkins将恢复为安全矩阵方式授权。

查看原文