目录
- 传送门
- 前言
- 一、概念
- 1、Jenkins是什么
- 2、Jenkins 的安装概念图
- 二、下载
- 1、下载war包(JDK17环境推荐)
- 2、下载rpm安装包(JDK8环境推荐)
- 三、对应JDK8的实际安装(Jenkins2.346.1)
- 1、安装指令
- 2、Jenkins2.346.1升级Jenkins2.346.3
- 3、官网的其他方式安装教程
- 四、对应JDK17的实际安装(Jenkins2.440.1)
- 1、安装指令
- 2、启动
- 五、启动报错解决
- 1、第1条
- 2、第2条
- 3、第3条(核心解决办法)
- 3.1、解决方案一(推荐):增加软链接
- 3.2、解决方案二:修改jenkins.service配置文件
- 4、第4条
- 5、第5条
- 六、访问
传送门
SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口
前言
以CentOS7纯Linux安装Jenkins(非Docker方式),有两个LTS版本的安装教程。一种是支持JDK8的Jenkins2.346-1的LTS版本安装,一种是支持JDK17的Jenkins 2.440.1的LTS版本安装。两种方式有些细节差别。
下面文章不定期更新中。。。
Linux安装JDK17(精品)
Linux安装MySQL(精品)
Linux安装Nginx(精品)
Linux安装Maven(精品)
运行一个jar包(精品)
Jenkins安装启动(JDK8/11/17)
Jenkins配置(插件/角色/凭证)
Jenkins的jdk和maven配置
Jenkins三种构建类型
一、概念
1、Jenkins是什么
做java开发的,都知道,自己开发的代码要通过svn或者git提交上去,然后运维或者java开发组长去发版测试环境和线上环境,有些大公司还有灰度环境(一般测试环境其实就够了,有些是需要支付回调之类的,是要真实的模拟url和现金账户之类的,所以灰度环境非常逼真,测试环境往往是内网ip地址。有些公司则是线上环境开一个单独的体系,用来测试,二者各有各的好处,也有些公司直接把测试环境当做灰度来用,不用内网ip地址,直接上域名,并且是通过公安备案的那种)。java开发组长或者运维早期,只是在Linux系统上通过指令来控制jar包或者war包的发版,当微服务时代来临以后就不太适合了。因为测试环境的实时提交代码更新测试,要求随时随地可能发版,这可得把运维或者小组长忙死。生产环境发版的谨慎规划等,是否要备份之前的jar包,是否马上就能发生产,是否有脚本要先执行之类的,太多细节了。全制动化工具Jenkins就是来帮忙处理的,只要根据需要配置好Jenkins,不管是普通开发、测试、产品,甚至实习生小白,一键点一下,全搞定。所以Jenkins在java体系学习中,虽然偏向运维或者测试那边,但是个人觉得,还是必须掌握的。不会玩Linux系统的,不是好程序员,不会运维的java开发,真的是缺点什么的。
2、Jenkins 的安装概念图
这个是比较粗狂的概念图。实际上安装要比这个复杂多了。有Linux系统上安装,有docker方式安装。安装以后还要具体根据自己公司或者个人环境配置端口等等,最好是了解每个环节,吃透搞懂,不然换个环境可能又跑不起来了。
二、下载
1、下载war包(JDK17环境推荐)
官网地址 https://www.jenkins.io/
Jenkins是一个开源项目,它没有特定的国家或地区归属。Jenkins最初由美国的Kohsuke Kawaguchi创建,并于2004年发起,但随着全球开发者的参与和贡献,Jenkins已经成为一个全球性的开源项目,得到了来自世界各地开发者和组织的支持和贡献。
大家看到英文网站不要慌,也不要急着去翻译。学java很多都是英文网站,其实看的多了,会发现很多规律。什么download这种简易单词总是认识的。真正需要翻译的再去翻译。习惯看英文网站,看多了,其实没有那么恐怖的。
我们点击网页中间那个红色的Download,进入下载界面,注意观察它网站的url,能看出很多东西。学java的都知道老外取名字,很有规律。
英文下载地址 https://www.jenkins.io/download/
由于这种网站都在实时更新,你打开的可能是更新的版本,我这边是24年3月份打开的网站截图。后面的都是以官网最新的为准。
LTS就是长期成熟稳定支持版本,在很多开源项目中,都是这么叫。像JDK8就是LTS的,JDK9则没有那么长期支持了。Weekly这个叫法也是有意思,反正就是周更版本。通常我们企业级搞Jenkins都是用LTS版本。但是通过这个下载页面,我们并不知道左边的2.440.1LTS到底支持哪些JDK,所以需要看另一个网页。
英文网站有个好处,蓝色标记的都是新rul地址,记不住的,可以挨个点开看看,总有一个适合你。
我们点击图中我框住的地址,进入新网页。
对jdk的支持列表 https://get.jenkins.io/war-stable/
可以发现网站规律。搞过网站备案的同学(就是自己有个人网站的同学)肯定了解。我这边小小提一下。jenkins.io就是Jenkins的主要域名了。前面的get什么的就是细分小类,结合后面的业务性质的war-stable可以让jenkins.io衍生出很多很多rul地址。简单点,就是前面的是分类,后面的就太多了,可以是特别多的业务的网页,比如写业务A页面、B页面等等。这个stable是成熟稳重的意思。
如果我们去打开右边周更版本的网站地址,会看到url是 https://get.jenkins.io/war/,明显少个stable单词。所以后面大家想灵活在不同环境不同操作系统弄的时候,这些网站规律会一定上帮到很大忙的。别因为下载Jenkins的包下载错了,而浪费很长时间排错。
言归正传,我们回到对jdk的支持列表 https://get.jenkins.io/war-stable/
打开以后
上面是周更版本,下面是LTS版本,我们主要看LTS版本。
超经典版本2.346.1,同时支持JDK8、JDK11、JDK17(这三个都是Java的LTS版本,也是企业级开发中用的最多的三个版本,像我们公司就是从JDK8直接升级到JDK17了,所以这种三个版本都支持的Jenkins版本无疑很吸引人,但是坑也是超级多,一个不小心,你的Jenkins就不干活儿了,而且插件不能乱升级) ,后面JDK8的实际安装,我就以这个版本为例子。
点击进来
2.346.1版本下载地址 https://get.jenkins.io/war-stable/2.346.1
点击最下面一行jenkins.war,下载war包到你的电脑上。下载的包就是jenkins.war。
如果实在不想看英文的下载网站,这边有Jenkins中文下载网站 https://www.jenkins.io/zh/download/,下载方式一样。
2、下载rpm安装包(JDK8环境推荐)
上面的是下载下来的是war包,还有一种下载下来是安装包,是rpm格式的。
rpm格式下载Jenkins https://mirrors.jenkins-ci.org/redhat/
这个下载以后的包是 jenkins-2.346-1.1.noarch.rpm,然后上传到你自己服务器。接下来的对应JDK8的实际安装,采取这种方式。采取rpm和直接war包方式差不多。为了更全面的教程,所以这里用rpm方式,rpm毕竟多个安装步骤,多了很多配置文件,这些配置文件可能是避坑的关键所在。
三、对应JDK8的实际安装(Jenkins2.346.1)
Jenkins的安装根据系统和一些环境的不同,甚至Jenkins本身的版本不同,安装方式都不同。笔者这边不考虑window系统的安装,先只考虑Linux系统的安装。然后根据java目前主流的JDK8和JDK17来区分两类安装。说实话两类差别还比较大。我们先看Jenkins2.346.1的安装(注意:它其实是JDK8/11/17都支持的,并且是采取rpm安装包方式,非war包方式)。
特别注意:安装前一定要把jdk8安装好。
1、安装指令
上传
xftp上传到 /usr/local/jenkins中,很多方式可以传到你自己服务器上,这里不细说。笔者我是放到了我自己Linux系统的/usr/local/jenkins文件夹下面了,可以在/usr/local新建个jenkins文件夹。熟悉我的读者可能都知道,我喜欢清楚的分类,知道自己安装的文件到底放到哪里的。将rpm格式下载Jenkins的包拷贝进去,笔者这里是
将 jenkins-2.346-1.1.noarch.rpm包直接放到了Linux服务器的/usr/local/jenkins下面。
cd /usr/local/jenkins
安装,这步之后其实也有了jenkins.war,但是笔者对比发现,这种方式会比直接上传war包多出一些配置文件,而这些配置文件是可能是避坑关键。毕竟2.346.1版本同时支持JDK8/11/17,坑实在太多了,稍微一步不对,后面得花很长时间排错。其实后面启动Jenkins,就是启动这步生成的war包。
rpm -ivh jenkins-2.346-1.1.noarch.rpm
修改Jenkins配置,直接上传war包就没有这个/etc/sysconfig/jenkins配置文件
vim /etc/sysconfig/jenkins
修改内容如下: JENKINS_USER=“root” JENKINS_PORT=“8090”
修改/etc/init.d/jenkins文件 ,配置jdk安装路径,直接上传war包就没有这个/etc/init.d/jenkins 配置文件
whereis java 查询显示 /usr/local/jdk/jdk1.8.0_181/bin/java
vim /etc/init.d/jenkins 下拉到candidates这个变量,然后将java的安装路径(上面查出的路径,到bin/java)添加进去
systemctl daemon-reload 命令重新加载配置文件
增加软链接(关键,其他的都是 yum java的,我这边是 单独配置的java8,如果你们也是yum方式安装的java,这步可以忽略,我这边是为了下面的报错,必须做这一步,注意前面路径改成你自己的jdk路径)
ln -s /usr/local/jdk/jdk1.8.0_181/bin/java /usr/bin/java
启动Jenkins
systemctl start jenkins
启动期间一直报错,java环境不对 jenkins: failed to find a valid Java installation
ln -s /usr/local/jdk/jdk1.8.0_181/bin/java /usr/bin/java (网上各种办法不行,最后这个软链接解决)
启动jenkins后发现端口并没有改为8090,原因和解决办法如下:
# 找到实际的jenkins.service ,vim后会发现里面很多配置,包括接口都默认了,上面的jdk环境问题,也可能这边指定解决
vim /usr/lib/systemd/system/jenkins.service
# 修改为想要的端口(vim里面找到这行修改)
Environment="JENKINS_PORT=8090"
# 重新加载配置文件
systemctl daemon-reload
#重启jenkins
systemctl restart jenkins
# 添加开机启动
sudo systemctl enable jenkins
# 查看启动状态
sudo systemctl status jenkins
访问地址: 服务器IP地址:8090 (注意防火墙或者安全组放行8090端口,jenkins默认是8080,这个8080太常用了,为了避免端口冲突,笔者上面才把它改成了8090)
修改/etc/init.d/jenkins文件 ,配置jdk安装路径
找jdk安装路径的正确办法,一路链接过去才是真正的安装位置。(下面截图,是有些服务器jdk的安装地址真是深,软链接用了好几个)
启动成功截图
ps -ef |grep java # 这个也可以查看,jenkins本身就是个war包
2、Jenkins2.346.1升级Jenkins2.346.3
注意,适合小版本升级,版本跨级太大,下面方式不一定有效。
2.346.3版本下载地址 https://get.jenkins.io/war-stable/2.346.3 去下载2.346.3包。
命令行:
whereis jenkins.war
find / -name jenkins.war 这个找到的更准确,一般是在/usr/share/jenkins目录下
然后将下载好的jenkins.war包拷贝进去,进去之前将原来的备份一下,比如改个名字。这样重新启动Jenkins版本,会发现升级成功。就是这么简单。
3、官网的其他方式安装教程
官网安装教程地址 https://www.jenkins.io/doc/book/installing/linux/
官网这边有其他的详细的安装教程,只是这里无法精准自己控制版本。下载的是官方推荐的比较新的Jenkins版本。当然里面详细的区分了LTS版本和Weekly周更版本的。注意,官网里面是以JDK17为环境的指令。
四、对应JDK17的实际安装(Jenkins2.440.1)
Jenkins的安装根据系统和一些环境的不同,甚至Jenkins本身的版本不同,安装方式都不同。笔者这边不考虑window系统的安装,先只考虑Linux系统的安装。然后根据java目前主流的JDK8和JDK17来区分两类安装。说实话两类差别还比较大。上面我们看了Jenkins2.346.1的安装(rpm方式),现在我们来用war包方式,来看Jenkins2.440.1的安装(不支持JDK8,支持JDK17,是24年3月的最新支持JDK17的LTS版本)。
特别注意:安装前一定要把jdk17安装好。
1、安装指令
方式一:直接获取最新版
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum install jenkins
方式二:上传指定版本war包安装
上面下载的jenkins.war包通过xftp等工具,上传到你自己的服务器上面,不过上传的位置有严格要求,必须是/usr/share/java目录下
yum install jenkin
可以看出方式一和方式二差不多。方式一是直接服务器上操作指令,获取了最新版的LTS的war包。方式二是通过自己点击下载网页,下载自己喜欢的war包,可以不是最新版的LTS的war包。
2、启动
sudo vim /usr/lib/systemd/system/jenkins.service
# 修改为想要的端口(vim里面找到这行修改)
Environment="JENKINS_PORT=8090"
# 重新加载配置文件
systemctl daemon-reload
#重启jenkins
systemctl restart jenkins
# 添加开机启动
sudo systemctl enable jenkins
# 查看启动状态
sudo systemctl status jenkins
访问地址: 服务器IP地址:8090 (注意防火墙或者安全组放行8090端口,jenkins默认是8080,这个8080太常用了,为了避免端口冲突,笔者上面才把它改成了8090)
启动成功截图
ps -ef |grep java # 这个也可以查看,jenkins本身就是个war包
五、启动报错解决
systemctl start jenkins # 启动jenkins,报错会出现下面信息
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
systemctl status jenkins.service # 这个是查看jenkins状态,如果没有启动成功,能看到当前最新报错日志
journalctl -xe # 这个查看的是累积日志
Jenkins启动报错的日志提示真的很扯淡,啥也看不出个啥。
上面截图基本都是废话信息,什么关键报错信息都没有。
这个报错信息还稍微有点用,至少能往Java配置那边想一想。
我们分析一下上面的1-5。
1、第1条
第1条就很扯淡了,反正我是没在我的服务器找到两个日志文件。
find / -name jenkins.log # 没找到,而且后面正常运行以后也没找到这个文件。可能Debian之类的Linux系统会有。
find / -name jenkins.out # 没找到,而且后面正常运行以后也没找到这个文件。可能Debian之类的Linux系统会有。
# 其实用这个就够了,不过日志实在看不出什么,太坑了
journalctl -xe # 这个查看的是累积日志
2、第2条
第2条还是比较有用的,端口被占用,确实会启动失败
netstat -nplt # 查看启动端口,可以跟 | grep 8080 查看具体一个;netstat -an查看更多
netstat -nplt | grep 8090 # r如果查到了,说明8090被别的需占用了,就换一个其他端口再试,注意新端口放行安全组的和防火墙的。
3、第3条(核心解决办法)
笔者经过多年使用Jenkins,发现最常见启动Jenkins失败,就是JAVA_HOME的配置问题。
下面以JDK17环境为主做案例。JDK8环境的读者类比,都是一样的道理。
首先,安装jdk方式不同导致问题
- 有些读者,直接使用了yum方式安装jdk17,导致安装下来的是openjdk17,当然这个版本没什么问题的,只是jdk、jre的路径需要whereis java查看确认。
- 有些读者是使用了Jenkins官网的 sudo yum install fontconfig java-11-openjdk命令来安装的,这种就是版本问题,本来是要弄jdk17环境的,但是下载的jdk确实11版本或者8版本的,虽然Jenkins也能运行起来,但是将来项目的支持埋下了祸患,比如你们公司项目还在用jdk8,那么用jdk17环境的Jenkins会有很多很多坑,反之公司用的jdk17,结果用了jdk8环境的jenkins,jenkins是跑不起公司项目的。
- 有些读者,比如笔者,则是自己通过下载Oracle的tar.gz包,解压后来的,这种是Oracle的包,和openjdk是不一样的。当然只要都是jdk17的,版本都是没什么问题,只是这种jdk、jre的路径也需要whereis java查看确认好。
上面各种安装jdk方式,会导致jdk、jre的路径五花八门,这也让JAVA_HOME配置出现了很大的问题。
其次,不管什么方式安装,都能统一解决。有多种解决方案,我们挨个来看,读者喜欢哪个就用哪个。
3.1、解决方案一(推荐):增加软链接
查看服务器的环境变量配置文件
vim /etc/profile
如果没有配置JAVA_HOME,就赶快配置上。必须配置的。这和你window电脑做开发配置JAVA_HOME一个道理。(不管哪个解决方案,这个必须做)
# 在末尾处添加 JAVA_HOME是你安装jdk的路径,你的jdk版本(不一定是17.0.10版本)
export JAVA_HOME=/usr/local/jdk-17.0.10
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
// 注意:JAVA_HOME、CLASSPATH、PATH必配置,最好5个变量都配置上。
// JAVA_HOME一定注意是你安装的jdk路径,是你安装的jdk17版本。注意,是bin目录上一层,这里一定要配置对,不然Jenkins是启动不了的。下面有验证命令
刷新一下
source /etc/profile
验证,如果出现java版本号之类的,就成功了,同window电脑一样,那么JAVA_HOME就配置好了。
java -version
接下来查看Jenkins的配置文件,Jenkins不管是rpm或者war包方式,最重要的配置文件就是
/usr/lib/systemd/system/jenkins.service
vim /usr/lib/systemd/system/jenkins.service
我们可以看到这个配置文件是配置端口、Jenkins工作目录等的主要配置文件。第一个红框框住的地方,JAVA_HOME前面是用#注释了的,说明配置没有启用。Jenkins启动要依赖jdk,毕竟Jenkins是个war包,上面的英文注释大概意思就是JAVA_HOME的配置路径,如果这个配置为空(就是没有去配置),那么默认的就去JENKINS_JAVA_CMD and PATH这两个变量去找。然后可以发现第二个红框框住的地方也是注释的了。
jenkins启动,找自己配置文件,发现JAVA_HOME、JENKINS_JAVA_CMD都是注释的,去找PATH,发现PATH自己配置文件也没有。启动失败。这边jenkins为什么不去/etc/profile中找JAVA_HOME呢?有知道的小伙伴评论区回复下。/usr/bin/jenkins文件有很多启动运行的配置信息。
cd /etc/alternatives
ll # 查看当前目录文件列表
通过截图可以发现,存放了大量的软链接。
解决办法:
# 一般会找到两个文件夹java: /usr/share/java /usr/local/jdk-17.0.10/bin/java
whereis java
# 增加软链接,我们选择实际安装jdk17的那个目录,长的是笔者实际安装的jdk17目录。/usr/bin/java是软链接名称。
ln -s /usr/local/jdk-17.0.10/bin/java /usr/bin/java
# 查看ls -lrt /usr/bin/java ,删除软链接可以用 sudo rm /usr/bin/java,慎用删除,删错文件可不好恢复。如果软链接红色闪缩,说明文件不见了并且是失败的链接,比如本例的/usr/local/jdk-17.0.10/bin/java 中java文件不见了,需要重新解压jdk17压缩包,或者重新安装jdk17,有了java文件以后,再看发现红色闪缩消失,软链接也真正成功了。
# whereis java 发现也变了 java: /usr/bin/java /usr/share/java /usr/local/jdk-17.0.10/bin/java
# 启动Jenkins,这下在增加软链接以后,启动成功了
systemctl start jenkins
查看ls -lrt /usr/bin/java 查看软链接
3.2、解决方案二:修改jenkins.service配置文件
本质思想还是让jenkins启动的时候找到jdk。
Environment="JAVA_HOME=/usr/local/jdk-17.0.10"
# 注意:双引号要加好,jdk路径要写对,bin上一层目录
# 重新加载配置文件,这个一定要做,不然修改后配置无效
systemctl daemon-reload
# 启动Jenkins,启动成功了
systemctl start jenkins
4、第4条
重新安装是一种尝试方式,不一定能成功,但是可以尝试。重新安装的时候,建议换个版本试一试。
5、第5条
百度一下,你就知道。这个是更好的解决办法了。
六、访问
访问地址: 服务器IP地址:8090 (注意防火墙或者安全组放行8090端口,jenkins默认是8080,这个8080太常用了,为了避免端口冲突,笔者上面才把它改成了8090)
这个密码哪里看呢,其实指令就可以查看的。
# 查看启动状态,这边是可以看到密码的
sudo systemctl status jenkins
# 也可以通过进入 页面提示目录 里面直接cat查到密码
cat /var/lib/jenkins/secrets/initialAdminPassword
选择插件安装-》选无-》选 安装 (跳过插件安装,后面换成本地的下载源快很多,国外的插件下载太慢了)
创建admin管理员账户
点击使用admin账户继续
这个url就是jenkins访问地址。点击保存并完成。
点击开始使用jenkins。用新设置的admin用户登录。如果不能登录,按照下图挨个解决
备注:第5条 就是 ,如果确认自己设置了admin账户,密码也是对的,怎么尝试都不行的话,就用下admin当用户名,下面查出的长串密码当口令。
# 也可以通过进入 页面提示目录 里面直接cat查到密码
cat /var/lib/jenkins/secrets/initialAdminPassword
前言中有Jenkins的Jenkins配置文章,请点击查看后续处理。