文章目录
1、Rocky Linux/ CentOS/Red Hat安装
2、安装jenkins
3、开放防火墙端口
4、启动Jenkins
4.1、设置开机启动
4.2、命令行启动
4.3、命令行检查运行状态
4.4、查看初始密码路径
5、权限角色配置
5.1、Jenkins有三款授权插件:
5.2、角色授权
5.2.1、Manage Roles(管理角色)
5.2.2、Assign Roles(分配角色)
6、增加agent
6.1 通过JNLP协议增加agent
6.2 通过swarm插件增加agent
6.2.1 安装插件swarm
6.2.2 安装swarm-client
7、部署到不同项目ssh免密登录
7.1 修改用户Jenkins的访问权限
7.2 免密登录远程机
1、Rocky Linux/ CentOS/Red Hat安装
获取jenkins安装源文件,导入公钥
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
2、安装jenkins
yum install jenkins
修改默认端口(默认是 8080 可能会和tomcat冲突,修改成8899)
vi /etc/sysconfig/jenkins
如果不行,修改jenkins.xml
# find / -name jenkins.xml # 查找jenkins.xml
vi /usr/lib/firewalld/services/jenkins.xml
如果还是不行,修改jenkins.service
vi /usr/lib/systemd/system/jenkins.service
# 修改完后jenkins.service,需要重新加载
systemctl daemon-reload
3、开放防火墙端口
firewall-cmd --zone=public --add-port=8899/tcp --permanent
重启防火墙
firewall-cmd --reload
4、启动Jenkins
4.1、设置开机启动
systemctl enable jenkins
4.2、命令行启动
systemctl start jenkins
4.3、命令行检查运行状态
systemctl status jenkins
4.4、查看初始密码路径
cat /var/lib/jenkins/secrets/initialAdminPassword
参考:https://www.jenkins.io/doc/book/installing/linux/
5、权限角色配置
5.1、Jenkins有三款授权插件:
Matrix Authorization Straegy插件:提供基于矩阵的安全策略
Project-based Matrix Authorization Straegy插件:提供基于项目的矩阵的安全策略
Role-based Authorization Straegy插件:提供基于角色的安全策略
本文使用基于用户角色的权限Role-based Authorization Straegy插件
在可选插件中搜索"Role-based",找到Role-based Authorization Straegy安装
安装完插件后,在"Manage Jenkins"菜单下会多一个”Manage and Assign Roles“菜单项
在全局安全配置中
安全域选择”Jenkins 专有用户数据库“
授权策略选择”Role-Based Strategy“
5.2、角色授权
5.2.1、Manage Roles(管理角色)
全局角色
默认有个 admin 的全局角色,拥有全部权限;新建的角色,至少要分配Overrall->read权限,否则登录后提示没有权限访问
项目角色
可以按项目、视图等名称进行正则匹配。如角色role_dev可以,正则匹配dev_.*,可管理所有以“dev_”名称开头的项目或视图。
节点角色
与项目角色类似,但是按节点名称来匹配权限。
5.2.2、Assign Roles(分配角色)
6、增加agent
Jenkins采用的是"master+agent"架构,master负责提供界面、处理HTTP请求及管理构建环境;构建的执行则由Jenkins agent负责
6.1 通过JNLP协议增加agent
在全局安全配置中,配置Agent连接端口和协议
指定端口:9812
代理协议:Java Web Start Agent Protocol/4 (TLS 加密)
进入系统管理->节点管理->新建节点,
设置
Number of executors:1
远程工作目录:/home/jenkins
启动方式:通过Java Web启动代理
ssh登录到Jenkins agent服务器,进入/home/jenkins
# 下载agent.jar文件(JNLP协议的客户端)
wget http://192.168.245.139:8899/jnlpJars/agent.jar #
java -jar agent.jar -jnlpUrl http://192.168.245.139:8899/computer/node%5Fs3/jenkins-agent.jnlp -secret 12153ae2170d68f77410daa10ad464bf34f989499532d46fdd01f467438a602c -workDir "/home/jenkins"
6.2 通过swarm插件增加agent
6.2.1 安装插件swarm
6.2.2 安装swarm-client
下载地址:https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/swarm-client/
ssh登录到Jenkins agent服务器,命令行下运行
wget https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/swarm-client/3.34/swarm-client-3.34.jar
java -jar swarm-client-3.34.jar -url http://192.168.245.139:8899/ -username penngo -password 123456 -name swarm-node
7、部署到不同项目ssh免密登录
7.1 修改用户Jenkins的访问权限
在Jenkins流水线任务中,默认会使用名为Jenkins的用户,执行时会报下 “Host key verification failed.” 错误
scp target/app-1.0.0-SNAPSHOT.jar root@192.168.245.137:/data/www/
Host key verification failed.
lost connection
修改/etc/passwd配置文件
vi /etc/passwd
把
jenkins:x:995:993:Jenkins Automation Server:/var/lib/jenkins:/bin/false
修改成
jenkins:x:995:993:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
7.2 免密登录远程机
当前服务器192.168.245.139,部署到192.168.245.137
139服务器执行ssh-keygen命令,生成密码
su jenkins # 切换到jenkins用户
# 执行后会生成两个文件:id_dsa、id_dsa.pub文件,前者是私钥,后者是公钥
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp .ssh/id_dsa.pub root@192.168.245.137:/root
137服务器执行命令
mkdir .ssh
chmod 700 .ssh
# 将目录权限改为700该目录的权限,必须是700才有效
cat id_dsa.pub >> .ssh/authorized_keys
# 修改文件权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效
chmod 600 .ssh/authorized_keys
如果ssh远程主机报错:“ssh_exchange_identification: read: Connection reset by peer”,解决办法
在要连接的主机137上修改配置文件
vim /etc/hosts.allow
# /etc/hosts.allow文件允许指定ip主机连接本机
sshd:192.168.245.139:allow
systemctl restart sshd
139 ssh连接137
ssh -v root@192.168.245.137 -p 22
查看ssh端口
netstat -anp |grep 22 // 查看端口占用
netstat -anp |grep ssh // 查看进程占用的端口
ps -ef|grep ssh|grep -v grep|awk '{print $2}'|xargs kill -9 // 删掉ssh进程
修改ssh配置
vi /etc/ssh/sshd_config
(责任编辑:IT) |