我是个懒人,之前项目打包更新发布时需要在服务器上一个一个的替换jar包,杀掉进程然后重启,感觉很麻烦,就捡起来之前放下的jenkins,鼓捣了两三天,在测试环境上面搭建好了jenkins持续集成,中间踩了很多坑,写下来总结一下。
1、基本环境安装&jenkins的安装
2、初始化jenkins&基本配置
3、在持续集成项目中步骤和遇到的问题
准备好了吗?开始~~
1、基本环境安装&jenkins的安装
1.1、工欲善其事必先利其器,Jenkins 自身采用 Java 开发,所以需要安装一个 jdk,centos7安装jdk的步骤我再啰嗦一下:
#查看yum源可以下载的jdk版本
yum search java | grep jdk
#选择jdk版本下载
yum install -y java-1.8.0-openjdk
#设置环境变量
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
保存退出,然后 source /etc/profile 使换将变量生效,然后输入java -version 查看java环境变量是否安装成功(如果这种安装java环境的方法不喜欢那就自行谷歌或者百度吧)。
1.2、由于我的项目是依赖maven的springboot项目并且jenkins打包我使用maven命令打包,所以我又安装了了maven环境:
Maven下载地址:http://maven.apache.org/download.cgi
找一个自己喜欢的位置,比如/home下面,这里提一下,下载的maven版本最好个你项目使用的maven版本一致,会避免很多奇奇怪怪的问题。
#下载maven
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
#解压
tar zxf apache-maven-3.5.4-bin.tar.gz
#重命名(最好重命名,方便简洁)
mv apache-maven-3.5.4 maven3.5.4
#创建个文件夹,保存jar包
mkdir /home/maven3.5.4/repository
更改一下maven的setting.xml文件的配置,本地存储jar包的位置:
改一下镜像,国内比较快的阿里的比较快:
#配置环境maven变量
vim /etc/profile
#在底部添加
export MAVEN_HOME=/home/maven3.5.4
export PATH=$MAVEN_HOME/bin:$PATH
保存退出,然后 source /etc/profile 使换将变量生效,然后输入mvn -v 查看maven环境变量是否安装成功。
1.3安装git
服务器上没有git环境,我们在服务器上安装git,命令 : yum install git ,等待安装完成。
1.4、啰嗦了这么多,终于到了安装jenkins了,很简单,一种是去官网( https://jenkins.io/)下个war包,放到tomcat里面启动也成,另外这种安装方法:
#下载Jenkins库
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
#导入key
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
#安装Jenkins
yum install -y jenkins
#启动Jenkins服务
systemctl start jenkins
这样,jenkins就安装完事了。不过我们需要对配置文件做一下小小的修改,以root用户启动jenkins,不然后面一些命令会提示没有权限。全局的配置文件在/etc/sysconfig/jenkins,执行命令:
#修改jenkins配置文件
vim /etc/sysconfig/jenkins
把这个属性改成root用户启动。
#重启jenkins
systemctl restart jenkins
OK,jenkins安装完成,是不是贼简单?
2、初始化jenkins &基本配置
2.1、初始化jenkins
jenkins的默认端口是8080,也可以在配置文件中修改。第一次登陆jenkins的时候,他会有一个私钥,
把这个密码复制到网页中,jenkins就开始正式启动,初始化了,如果不想太麻烦的话,就直接按照他的推荐来安装插件,据说jenkins可以集成各种插件,这才造就了他的名声,点击jenkins社区推荐安装的插件就到安装插件页面
安装好插件后会让你创建一个管理员账号,这个邮箱是必填的,下面还有个用admin账号登陆,怎么选随你们,一定记好账号密码呦~
创建完成,我们就可以开始使用jenkins了,如果一直白屏,可以重启一下~
2.2、基本环境的设置
登陆jenkins,首页就是这样子,现在我们配置一下jdk和maven,这两个环境我们在第一步已经在服务器上安装过了。点击【系统管理】--》【全局工具配置】
首先设置maven的setting.xml:
jdk配置(不要点击自动安装,指定一下已经安装好的jdk就好了):
maven配置(也不要点击自动安装):
git配置:
然后在jenkins主页面–》【系统管理】–》【全局工具配置 】,git里面的Path to Git executable 中填写git的地址,(即whereis git
的前半部结果)不要选择自动安装。
最后点击保存。项目打包后有的可能需要发送到远程服务器,所以我们还需要手动安装两个插件:
Publish Over SSH ---》 用于连接远程服务器
Deploy to container ---》 把打包的应用发布到远程服务器
在【系统管理】--》【插件管理】中:
然后等待插件安装完就好了,漫长的等待~这个重启选不选都可以,不放心可以两个插件都安装完之后手动重启。
2.3、添加SSH服务器配置和凭证管理
插件安装完之后,我们配置一下需要将打好的包远程发布的服务器地址,【系统管理】--》【系统设置】,
最下面有SSH Servers,点击【新增】,【高级】:
Passphrase / Password 是连接服务器的密码~,设置好了点击保存就ok。
接下来我们添加链接git库的凭证,参考https://blog.csdn.net/ymxkybqw/article/details/82726973或者https://blog.csdn.net/atec2000/article/details/81562695,第二篇文章讲得简洁明了。
3、在持续集成项目中步骤和遇到的问题
现在我们可以开始集成项目了,【新建任务】--》:
输入名字,选择创建自由风格的项目,点击确定,这就算创建了一个项目,接下来是对这个项目的配置:
这些,可选可不选,其实这里就是对构建的一些设置,我也没深入研究。
配置项目git地址:
配置项目构建时间:
构建语法小链接:https://blog.csdn.net/zzy1078689276/article/details/77520441/
将将时间戳添加到控制台输出:
项目的构建过程
一般构建maven项目常会用到这三种,调用顶层maven目标就是在服务器上调用咱们安装好的maven环境,使用mvn命令打包,常用打包命令:mvn clean install
也可以根据项目的配置文件制定test还是dev环境的打包。jenkins把代码拉取下来之后会保存到默认的工作空间,这个在构建项目时看控制台打印信息就可以看到,当然这个工作空间也可以自己指定位置。
打包完成之后,jenkins的默认工作空间是在/var/lib/jenkins/workspace/下面,如果是在本服务器发布jar包,那就添加一个shell命令模块,
我这里写了个jar包启动、停止、重启的shell脚本,方便使用,这里把这个脚本贴一下,大家可以瞅瞅:
我箭头指向的那句话,一定要加,因为Jenkins任务结束时候可能会自动关掉所有的子进程,这样咱们刚启动的项目就会被干掉,如果使用shell脚本启动jar包,一定要加上这句话,其他的启动类型,我给大家一个参考链接:https://blog.csdn.net/qq_25559693/article/details/72844340
如果是war包用tomcat启动,那就可以把war包copy到tomcat的webapp目录下,然后调用bin目录下的start.sh和stop.sh就可以。
如果是将包发布到远程服务器,那就应该是添加一个:
因为之前咱们已经配置过远程SSH Server,这里就不在赘述,直接看配置:
注意一下,这里的jar包位置和远程服务器的目标目录都不是绝对路径,在配置SSH Server的时候咱们填写过一个目录位置,这里的目标目录是填写的目录下的文件夹位置。不知道我这样说大家能明白不~囧。
最后需要清理一下工作空间,把缓存的信息清除掉:
只需要在构建成功之后clean一下就ok,那现在一个项目的构建已经完事了,现在构建一下,让我们看看控制台的输出信息
立即构建~并且查看控制台打印的信息:
当然,我这里给大家展示的是成功的例子,其实有什么错误,他都会在控制台打印出来,包括你的shell命令写错之类的小错,跟平时的maven打包没啥两样,至此,一整个项目就构建完成了。
记录一下学习jenkins的过程与大家分享,虽然我还有好多配置没有弄清楚和没用到,jenkins还可以集成sona代码质量检测、swagger等等插件。如果有什么说的不对的地方还希望大家能指正批评,互相学习共同进步!