Devops-day3-Jenkins配置用户+策略+凭据
文章目录
1.添加用户
2.管理用户
- 可配置信息、删除用户
3.配置全局策略
- 开启权限全局安全配置
4.查看用户角色
- Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
- Item roles(项目角色):针对某个或者某些项目的角色
- Node roles(节点角色):节点相关的权限
4.新建三个用户
- Base
- Alvin
- Oldboy
5.设置角色类型
- Base:设置成所有的用户都有查看的权限
- Alvin:设置以 alvin 开头的项目有超管权限,注意是开头
- Oldboy:设置以 oldboy 开头的项目有超管权限,注意是开头
分配角色:
* # 匹配所有
.* # 匹配所有
xxx.* # 匹配以xxx开头的所有
*xxx # 匹配以xxx结尾的所有
6.关联创建的用户
- 给用户分配角色
7.创建项目
- 创建项目,切换用户查看,测试权限是否生效
主面板 --> 新建任务 --> 如下
在item rules 项目角色栏内:用户可相互共享管理对方的项目
7.凭据配置
- jenkins配置:从gitlab拉取源代码
- 两种添加方式:ssh、php
- Username with password:用户名和密码(推荐)
- SSH Username with private key: 使用 SSH 用户和密钥
- X.509:证书,一般使用第三方云服务时使用
- Certificate:docker 私有仓库密码存储类型。
- Secret text:需要保存的一个加密的文本串,如钉钉机器人或 Github 的 api token
- Certificate:通过上传证书文件方式。
- Secret file:需要保密的文本文件,使用时 Jenkins 会将文件复制到一个临时目录中,再将文件路径 设置到一 个变量中,等构建结束后,所复制的 Secret file 就会被删除
系统管理 ---> Manage Credentials ---> 系统凭证 ---> 全局凭证 ---> 添加凭证
1)ssh方式
系统管理 ---> Manage Credentials ---> 系统凭证 ---> 全局凭证 ---> 添加凭证 ---> ssh username with private key
- 配置项目
-
将gitlab的项目ssh链接复制到jenkins项目进行配置
-
jenkins服务器必须安装git服务,否则此处添加失败,会报错
[root@jenkins ~]# yum install -y git
- 进入jenkins服务器查看构建的项目文件
# 查看构建结构
[root@jenkins ~]# tree /var/lib/jenkins/workspace/
/var/lib/jenkins/workspace/
├── test1
│ └── README.md
└── test1@tmp
# 下载下来的软件代码
[root@jenkins workspace]# ll -a test1
total 4
drwxr-xr-x 3 jenkins jenkins 35 Apr 15 17:03 .
drwxr-xr-x 4 jenkins jenkins 36 Apr 15 17:03 ..
drwxr-xr-x 8 jenkins jenkins 162 Apr 15 17:05 .git
-rw-r--r-- 1 jenkins jenkins 11 Apr 15 17:03 README.md
# 软件仓库与在网页端配置的一致,配置成功
[root@jenkins workspace]# cat test1/.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@192.168.12.82:jishubu/project.git # 软件仓库链接
fetch = +refs/heads/*:refs/remotes/origin/*
2)http方式
系统管理 ---> Manage Credentials ---> 系统凭证 ---> 全局凭证 ---> 添加凭证 ---> Username with Password
- 此时需把jenkins的公钥推送至gitlab端
[root@jenkins .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.12.82
- 至此配置拉取代码成功
代码拉取过来之后,需要编译(如Java、Go等),但此时我们使用的是PHP(网页前端的方式html),无需编译即可执行
此时我们假设它是需要编译的
回到项目 --> 配置 --> 构建环境
结论:在构建以前所有的操作都是在jenkins服务器上执行,构建以后则是在对应部署服务的服务器上执行。
- 默认针对整个test1项目下的部署扫描路径:/var/lib/jenkins/workspace/test1/
- 若构建时失败报错:
- 解决报错:
# 进入 jenkins 服务器查看内容,成功!
[root@jenkins .ssh]# cat /var/lib/jenkins/workspace/test1/test.html
假设这是在编译
- 构建后操作(针对gitlab服务器)
- 配置完保存,立即构建,查看构建详情,进入服务器查看构建内容
source files:文件源路径,若要传目录内所有文件,则需要在路径后加两个*(root/**)
Remove Prefix:移除文件前缀,我们只是传输目录内的所有文件,目录名并不需要,那么就需要将其移除(root/)
Remote directory 远程服务器上传目录(该目录是相对于刚刚系统设置里ssh servers里设置的路径)
exec command 在传输完成后执行的命令,一般为清理文件、复制文件、重启一些服务等等。
# 进入 gitlab 服务器查看内容,成功!
[root@gitlab ~]# cat 1.html
gdx
-
按标签部署
新建标签流程: 进入gitlab --> 项目 --> 编辑项目内容保存 --> 新建标签stable1 --> 再编辑项目内容 --> 新建标签2
8.常用的两种参数
- 选择器:分1、2、3级,可以单选、列表样式、多选
- 隐藏参数:异常部署信息
1)隐藏参数
2)选择器
- 先配置
- 前三个都是单选,只是样式不同
- 最后一个是多选
- 使用场景举例
- 此参数依赖于上一个参数
可以这样理解:
Active Choice Paramter # 选择器
Active Choice Reactive Parameter # 选择器参数列表
先定义一个选择器,内有三个参数
再定义选择器参数的列表
- 先定义选择器
- 再定义选择列表
Choice
return ["上海","北京","天津"]
Choice_bak
if (Choice.equals("上海"))
{ return ["青浦区", "静安区", "普陀区"] }
else if (Choice.equals("北京"))
{ return ["昌平区", "朝阳区", "顺义区"] }
else if (Choice.equals("天津"))
{ return ["武清区", "红桥区","和平区"] }
else
{ return ["Unknown project"] }
Choice_bak2
if (Choiceb_bak.equals("武清区"))
{ return ["小凳子", "小桌子", "小贵子"] }
else
{ return ["Unknown project"] }