Jenkins安装
更多Jenkins详细信息请参考:Jenkins官方文档
分步指南
-
获取Jenkins资源
可以访问 https://jenkins.io/zh/download/ 下载获取
可以访问http://mirrors.jenkins-ci.org/redhat/下载获取ps:安装jenkins之前,请预先安装java环境(且应为jdk8或jdk11,注意版本),可以参考Linux环境搭建记录——JDK安装
-
上传资源到服务器
创建jenkins文件夹,上传资源文件
mkdir /home/admin/download/jenkins && cd /home/admin/download/jenkins
执行前置依赖插件安装命令
yum -y install epel-release yum -y install daemonize
执行rpm安装命令
rpm -ivh jenkins-2.332-1.1.noarch.rpm
-
修改jenkins运行配置
修运行jenkins所使用的用户及运行端口:
vim /etc/sysconfig/jenkins
找到内容并修改为
#默认填写用户为jenkins,需要根据现有用户修改 #JENKINS_USER="jenkins" JENKINS_USER="root" #默认运行端口为8080 #JENKINS_PORT="" JENKINS_PORT="8888"
修运行jenkins所使用的JDK版本:
vim /etc/init.d/jenkins
找到内容 candidates 并添加 JDK 路径
#这里指定JDK安装的文件路径 #我们添加的路径为/home/admin/java/jdk1.8.0_321/bin/java #增加在第一行 candidates=" /home/admin/java/jdk1.8.0_321/bin/java /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-11.0/bin/java /usr/lib/jvm/jre-11.0/bin/java /usr/lib/jvm/java-11-openjdk-amd64 /usr/bin/java "
由于墙的原因导致的网络问题,原有配置的插件镜像地址无法获取资源所以还需要进行地址修改
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
把url修改为
<?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>http://mirror.xmission.com/jenkins/updates/update-center.json</url> </site> </sites>
对于jenkins有几个默认的重要位置需要记录
1)war包: /usr/lib/jenkins/jenkins.war
2)配置文件:/etc/sysconfig/jenkins
3)默认的JENKINS_HOME目录:/var/lib/jenkins/
4)Jenkins日志文件地址:/var/log/jenkins/
5)服务启动文件:/etc/init.d/jenkins -
注册服务,启动服务
#重新加载 systemctl 服务 systemctl daemon-reload #此时已经可以启动jenkins服务 systemctl start jenkins #停止jenkins服务 systemctl stop jenkins #重启jenkins服务 systemctl restart jenkins #查看jenkins服务状态 systemctl status jenkins
-
开启防火墙端口策略
#查看防火墙全部设置 firewall-cmd --list-all #若防火墙服务未启动可执行 systemctl start firewalld #设置nexus服务端口防火墙可访问 firewall-cmd --zone=public --add-port=8888/tcp --permanent #重新加载防火墙设置 firewall-cmd --reload #重新查看防火墙全部设置确认添加成功 firewall-cmd --list-all
此时就能通过浏览器访问了
依照安装提示进行操作
根据提示在 /var/lib/jenkins/secrets/initialAdminPassword 找到密码并粘贴到输入框#显示初始密码 cat /var/lib/jenkins/secrets/initialAdminPassword
输入密码后进入界面,由于没有网络所以这里显示的是离线操作,有网络的状态可以直接选择需要的插件进行安装,我们这里选择跳过插件安装,后续进行插件补充。设置管理员账号后,点击保存并完成,之后按顺序保存开始使用即可。
Jenkins升级
-
获取需要更新的Jenkins资源
可以访问 https://jenkins.io/zh/download/ 下载获取
可以访问http://mirrors.jenkins-ci.org/redhat/下载获取ps:更新jenkins之前,请检查对应的jdk依赖版本是否符合,否则会导致升级失败
-
查看 war 包所在目录
# war 包默认在 /usr/lib/jenkins/jenkins.war 路径上,但也可以自定义设置 rpm -ql jenkins # 如下为执行展示结果 #jenkins的启动文件 /etc/init.d/jenkins #日志切割 /etc/logrotate.d/jenkins #jenkins的配置文件 /etc/sysconfig/jenkins #jenkins的依赖 /usr/lib/jenkins #jenkins的程序war包 /usr/lib/jenkins/jenkins.war #jenkins的为二进制文件 /usr/sbin/rcjenkins #jenkins的程序文件,运行程序解压出来的 /var/cache/jenkins #jenkins的主目录 /var/lib/jenkins #jenkins的日志文件 /var/log/jenkins
-
停止 jenkins 服务
#停止jenkins服务 systemctl stop jenkins
-
替换 war 包
cd /usr/lib/jenkins/ mkdir backup mv jenkins.war backup/jenkins-$version.war #然后将新获取的 war 包上传到该路径下
-
启动 jenkins 服务
#启动jenkins服务 systemctl start jenkins
Jenkins插件离线安装
-
获取Jenkins资源
可以访问 https://plugins.jenkins.io/ 下载获取 -
搜索对应插件名称,获取资源文件
以 Publish Over SSH 为例,搜索获取 publish-over-ssh.hpi 资源文件
如果需要进行汉化则搜索 Simplified Chinese Plugin 插件进行安装。 -
插件生效
#此为正常安装环境下的插件包管理路径 #将下载的离线插件包传入该路径下 cd /var/lib/jenkins/plugins #将需要的插件上传完毕后进行服务重启使插件生效 #由于离线操作很多插件依赖会缺失,下载插件时需要对比清楚插件依赖进行选择 #此外如果不符合要求,插件管理菜单中也会有相应的版本提示,按照版本要求安装对应插件即可 systemctl restart jenkins
配置使用Private_Key免密登录服务器
Linux环境下,经常通过SSH从一台服务器登录到另一台服务器,并且登录身份可能不是root账号,每次都要输入密码挺麻烦且有暴露密码的不安全性,所以需要配置非root账号的免密码登录;
我们以Jenkins服务器为中心,访问各应用服务器需要保证服务器间的22端口通信,在应用服务器上生成RSA非对称密钥,并将私钥传输到Jenkins服务器中。
- 生成密钥
在应用服务器上执行
ssh-keygen -t rsa
会在目录/root/.ssh或对应用户目录~/.ssh(例如 /home/admin/.ssh)生成id_rsa私钥、id_rsa.pub公钥,将公钥的内容写入到同目录下的authorized_keys文件(jenkins连接多台服务器,将公钥写入到相应服务器的authorized_keys文件即可)
在 ~/.ssh 下创建一个 authorized_keys
touch authorized_keys
将 id_rsa.pub 文件的内容输出到 authorized_keys
cat id_rsa.pub >> authorized_keys
如果是非root账户操作需要调整文件夹及文件权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
2.下载 id_rsa 私钥
上传至Jenkins服务器指定目录下,并根据需求重命名
例如上传文件至:
/home/admin/ssh_key/id_rsa_192.168.0.X
3.进行系统全局配置
系统管理->系统配置->SSH Servers->新增
测试成功会返回Success。
也可以在Jenkins服务器上的 id_rsa 的目录下执行测试验证成功后会使用指定用户登录目标服务器
ssh -i id_rsa -o StrictHostKeyChecking=no root@192.168.0.x