Jenkins和Gitee自动化部署SpringBoot项目
Posted 风在哪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins和Gitee自动化部署SpringBoot项目相关的知识,希望对你有一定的参考价值。
Centos使用Jenkins和Gitee自动化部署Spring Boot项目
本教程是在腾讯云上面通过jenkins.war包进行Jenkins的部署,没有采用docker和yum的方式。此外,本项目是在云服务器本地进行自动构建,所以就没有配置publish over ssh
环境准备
首先我们需要确保已经安装了jdk、maven和git环境。因为Jenkins需要使用git从gitee上面拉取项目源码,然后通过maven进行构建,然后需要通过jdk运行构建好的项目,所以这里需要这些环境
jdk安装
安装jdk只需要将下载好的压缩包上传至云服务器,然后配置相应的环境变量即可。
我这里下载的是jdk-8u291-linux-x64.tar.gz,下载地址:jdk8
下载完成后上传至云服务器,我这里上传到了/usr/local/目录下,在改目录下直接运行如下命令进行解压即可:
tar -zxvf jdk-8u291-linux-x64.tar.gz
解压完成后要配置环境变量,主要是编辑/etc/profile文件,这里使用vim进行文件的编辑操作
vim /etc/profile
然后在文件的末尾添加如下环境变量:
export JAVA_HOME=/usr/local/jdk1.8.0_291
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
jdk到这里就配置好了。
可以通过java -version检验配置是否成功。
maven安装
maven下载网址:https://maven.apache.org/download.cgi,下载apache-maven-3.8.1-bin.tar.gz即可
将下载好的文件上传至云服务器,我这里直接上传到了/usr/local/目录下,然后直接将其解压
tar -zxvf apache-maven-3.8.1-bin.tar.gz
解压完成后我们需要修改部分配置,这里已知maven的安装路径为/usr/local/apache-maven-3.8.1,我们需要修改安装路径下conf/settings.xml文件。主要修改两点:
-
第一点就是maven的镜像,使用阿里云镜像可以极大的加快速度
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
直接将mirrors节点中的镜像改为阿里云镜像,其他的都注释掉即可
-
第二点就是maven仓库的位置,maven仓库我直接在maven的安装目录下新建了repository文件夹,然后配置localRepository节点即可,localRepository节点紧挨settings节点
<localRepository>/usr/local/apache-maven-3.8.1/repository</localRepository>
接下来就是配置环境变量,同样是在/etc/profile文件中添加环境变量,内容如下:
export MAVEN_HOME=/usr/local/apache-maven-3.8.1
export PATH=$PATH:$MAVEN_HOME/bin
然后再运行source /etc/profile使其生效即可。
然后可以运行mvn -v命令查看是否配置成功
git安装
这里采用的源码安装的方式进行git的安装操作,没有使用yum安装是因为yum安装的git版本比较低,所以直接通过源码编译安装。
源码下载地址:https://github.com/git/git/releases,我下载的2.31.1版本的git
同样,将下载好的git-2.31.1.tar.gz上传到/usr/local目录下,然后对其进行解压。
tar -zxvf git-2.31.1.tar.gz
解压完成以后,我们就得到了解压后的源码,然后进入到解压后的目录:/usr/local/git-2.31.1,接下来就是编译源码,但是在编译源码之前,我们需要先安装一下依赖:
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
当这些依赖安装完成以后,系统自动为我们安装了git,此时我们要卸载掉旧版本的git:
yum -y remove git
接下来在源码所在的目录下编译源码:
make prefix=/usr/local/git all
然后将git安装到/usr/local/git目录下
make prefix=/usr/local/git install
接下来又是配置环境变量的配置,相信不用说大家都知道怎么配置了吧:
export PATH=$PATH:/usr/local/git/bin
配置完成以后运行git --version检查配置的成果
这里没有配置user.name和user.email,因为只是使用git来拉取代码,没有进行代码的修改和提交操作,所以暂时没有进行这些配置
至此环境都准备好了,开始正主Jenkins的安装了。
安装Jenkins
这里采用的是直接运行Jenkins提供的war包,所以,我们首先需要去Jenkins下载对应的war包。
这里是在Jenkins的用户手册的安装Jenkins章节里面找到的下载war包的地址(点击下图中红框内的文字)
但是有一个小问题,就是点击了它的网址之后没有反应,点了好几次都是这样,所以我就打开控制台看了一下,发现有报错
找到了问题原因,就是https网址下不能访问http协议的网址。所以直接点击这个连接即可:http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.277.4/jenkins.war,至此,jenkins.war包就下载完成了
下载完成以后将jenkins.war包上传到云服务器,然后通过nohup命令后台运行:
nohup java -jar jenkins.war --httpPort=9000 > jenkins.log 2>&1 &
这里通过httpPort来修改了端口号,然后将Jenkins的日志输出到jenkins.log中。这里2>&1就是用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。
当执行完成后,我们可以去浏览器访问Jenkins,访问网址就是你的ip地址加端口号9000,例如:192.168.1.114:9000
初次访问会等一小会:
然后就要输入管理员密码,管理员密码在/root/.jenkins/secrets/initialAdminPassword文件中。
输入密码之后就进入下面插件安装的页面,这里选择安装推荐的插件:
插件安装完成之后就可以创建用户了:
创建完成后通过账号和密码登录即可。
登录完成之后我们要安装如下两个插件:Maven Integration plugin和Gitee Plugin,只有安装了这两个插件之后才能通过Jenkins部署gitee的spring boot项目。
配置Jenkins
进行全局工具配置
这里要配置maven、git和jdk三种环境。
首先是maven的settings.xml文件的地址:
接着就是jdk的地址:
然后是git的地址,注意这里是/usr/local/git/bin/git:
最后是我们本地maven的地址:
其他暂未使用到的环境未进行配置,如ant和gradle
配置Gitee
接下来就是配置gitee相关的属性。此时我们要在configure system中配置:
其中链接名可以任意取,但是Gitee的域名必须是https://gitee.com,如果是个人的主页的话会出现404的情况。
接下来就是配置Gitee的API令牌,这里要选择Gitee API令牌配置。
接着将api令牌输入即可,id和描述任意
Gitee API令牌的获取
登录gitee之后,访问如下网址:https://gitee.com/profile/personal_access_tokens,然后生成新的令牌:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yvmg1iR6-1622036752989)(E:\\学习笔记\\StoragePicture\\image-20210526210017786.png)]
填写令牌的描述:
提交之后输入密码即可查看私人令牌,而且该令牌只显示一次,要妥善保存。将该私人令牌填入刚才的Jenkins Gitee APIV5私人令牌即可。
配置完成之后可以测试是否能成功连接:
创建自动构建任务
点击新建Item创建任务:
创建任务时要选择构建maven项目,如果没有这个选项的话要去安装maven插件。这里还要注意任务的名称,Jenkins会根据任务名称生成指定的文件夹,通过git获取的项目源码会存在该文件夹下,这里后面会用到。
然后要进行任务的配置:
描述可以随意写,表明任务的主要作用即可
然后要选择丢弃旧的构建:
源码管理
接着在源码管理时要根据仓库的地址进行管理:
git仓库的地址就是我们git clone使用的地址,接着还要配置Credentials,这里我们使用Username with password类型的配置:
如果git仓库是自己所有的话就填写自己Gitee的账号和密码(仓库的成员也可),否则要填写仓库成员或仓库拥有着的gitee账号和密码
填写完毕后选择我们刚配置好的Credentials。如果这里没有标红就证明没错误,例如:
构建触发器
这里我们选择webhook构建触发器,在gitee的webhook中要填写此处的URL:
然后点击生成产生webhook的密码:
生成密码之后要去git仓库进行操作。
在创建webhook时要填写Jenkins中生成的网址和密码,然后添加即可
Pre Steps
pre steps就是在执行构建之前的一系列操作,这里我们的操作就是停止上次构建成功后运行的任务,这里选择执行shell命令即可。
shell命令如下:
echo "准备停止learn-0.0.1-SNAPSHOT.jar"
pid=`ps -ef | grep 替换为你的jar包名称 | grep -v grep | awk 'print $2'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "停止learn-0.0.1-SNAPSHOT.jar完毕"
Build
这里我们指定全局命令即可:
clean package -Dmaven.test.skip=true
这个命令的意思就是:
- clean:在进行真正的构建之前进行一些清理工作,移除所有上一次构建生成的文件。执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件
- package:打包。将工程文件打包为指定的格式,例如JAR,WAR等(看你项目的pom文件,里面的packaging标签就是来指定打包类型的)。这个命令会在你的项目路径下一个target目录,并且拥有compile命令的功能进行编译,同时会在target目录下生成项目的jar/war文件。如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目,说明a项目在本地仓库是没有找到它所依赖的b项目,这时就用到install命令。
- install:安装。将包安装至本地仓库,以让其它项目依赖。该命令包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b项目时,会在本地仓库同时生成pom文件和jar文件,解决了上面打包package出错的问题)。
- -Dmaven.test.skip=true:不执行测试用例
Post Steps
这里也选择执行shell命令
这里的操作就是当Jenkins打包完成之后,将打包的文件移动到指定的文件夹下并运行。
注意:这里workspace目录下的test_spring_boot就是任务名,Jenkins根据任务名创建存储源码的目录
这里要注意将相关的目录和文件名配置成自己的目录和文件名,否则会失败的哦!
BUILD_ID=DONTKILLME
echo "移动jar包到webee目录,并去掉版本号名称"
if [ ! -d "/home/code" ];then
mkdir /home/lighthouse/code
else
echo "文件夹已经存在"
fi
if [ ! -f "/home/code/learn-0.0.1-SNAPSHOT.jar" ];then
echo "文件不存在"
else
rm -f /home/code/learn-0.0.1-SNAPSHOT.jar
fi
mv -f /root/.jenkins/workspace/test_spring_boot/target/learn-0.0.1-SNAPSHOT.jar /home/code/learn-0.0.1-SNAPSHOT.jar
echo "移动jar包完成"
echo "启动testJenkins服务"
nohup java -jar /home/code/learn-0.0.1-SNAPSHOT.jar > /home/code/learn.log 2>&1 &
echo "启动testJenkins服务完成"
当配置完成以后就可以开始构建了:
构建完成后我们可以查看构建结果,在控制台输出中可以查看这次构建的日志:
在左下角也可以看到构建的成功和失败,红色代表失败:
最后
当我们修改项目并且提交的git仓库之后,Jenkins会自动帮助我们构建,这里就是webhook的作用。
通过Jenkins给我们带来了极大的遍历。我们很方便地进行项目的部署,不再做哪些重复的操作,将我们从这些重复的操作之中解脱出来,提高开发的效率。
感谢阅读到最后的读者,有什么问题可以在评论区一起讨论哦!
参考
以上是关于Jenkins和Gitee自动化部署SpringBoot项目的主要内容,如果未能解决你的问题,请参考以下文章
Docker+jenkins+Gitee+Maven构建自动化部署
Docker+jenkins+Gitee+Maven构建自动化部署
Jenkins+Docker+Gitee+SpringBoot自动化部署