Jenkins最佳实践
1,jenkins执行问题
1.1 权限组
1 | sudo visudo |
将jenkins的user添加到root的组里,这样就可以执行root相同的命令了
1 | root ALL=(ALL) ALL |
这个方法只是确保能执行命令,命令关联的权限依然是有问题的。
1.2 切换到jenkins账号
1 | sudo su -s /bin/bash jenkins |
1.3 命令的权限
例如docker,你就需要允许jenkins获得相同的权限
1 | sudo usermod -aG docker jenkins |
如果不添加,执行docker相关的命令,会报下面这个错:
1 | Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied |
2,用户权限
2.1 安装并启用插件
在插件安装页面安装Role-based Authorization Strategy
再在"Manage Jenkins->Security->Configure Global Security"页面,勾选Role-Based Strategy,如下图:
此时再进入"Manage Jenkins"页面的"Security"模块就可以看到"Manage and Assign Roles"的角色编辑入口了。
2.2 jenkins工程示例
假设我们的jenkins工程如下:
1 | └── folder1 |
我们希望user-dev看到dev开头的job,user-test看到test开头的job
2.3 权限说明
如下图:
Global roles,基础角色
Item roles,基于project的角色
2.4 基于权限配置
新建一个Global roles的角色,假设test_global_role,只勾选Over rall
的read,别的都不要勾选。(因为Global roles权限会覆盖Item roles的权限)
接下来是关键:
新建一个只能看到名称是test开头的job的角色read_test,再配置正则:
1 | folder1|folder1/folder2|folder1/folder2/test.* |
"|"
表示多个正则的并列关系"/"
是文件夹的分割线".*"
表示结尾的正则匹配
由于test开头的job都在"folder1/folder2/“下面,所以需要每个文件夹并列写,直到写到最后一级目录。
最后点击"save”,再新建用户勾选这个角色,那么这个用户就只能看到"folder1/folder2/"下面的test开头的job了。
3,修改端口
1 | $ vim /etc/sysconfig/jenkins |