程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Jenkins和Gitee自动化部署SpringBoot项目

发布于2021-05-29 21:16     阅读(1002)     评论(0)     点赞(8)     收藏(2)


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即可

image-20210526200359596

将下载好的文件上传至云服务器,我这里直接上传到了/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

image-20210526201734977

同样,将下载好的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包的地址(点击下图中红框内的文字)

image-20210526195015843

但是有一个小问题,就是点击了它的网址之后没有反应,点了好几次都是这样,所以我就打开控制台看了一下,发现有报错

image-20210526195213827

找到了问题原因,就是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

初次访问会等一小会:

image-20210526204351869

然后就要输入管理员密码,管理员密码在/root/.jenkins/secrets/initialAdminPassword文件中。

image-20210526204409647

输入密码之后就进入下面插件安装的页面,这里选择安装推荐的插件:

image-20210526204547211

插件安装完成之后就可以创建用户了:

image-20210526204658961

创建完成后通过账号和密码登录即可。

登录完成之后我们要安装如下两个插件:Maven Integration plugin和Gitee Plugin,只有安装了这两个插件之后才能通过Jenkins部署gitee的spring boot项目

image-20210526214339650image-20210526214425620

配置Jenkins

进行全局工具配置

image-20210526205059682

这里要配置maven、git和jdk三种环境。

首先是maven的settings.xml文件的地址:

image-20210526205150854

接着就是jdk的地址:

image-20210526205204911

然后是git的地址,注意这里是/usr/local/git/bin/git

image-20210526205218599

最后是我们本地maven的地址:

image-20210526205302935

其他暂未使用到的环境未进行配置,如ant和gradle

配置Gitee

接下来就是配置gitee相关的属性。此时我们要在configure system中配置:

image-20210526205501460

其中链接名可以任意取,但是Gitee的域名必须是https://gitee.com,如果是个人的主页的话会出现404的情况。

接下来就是配置Gitee的API令牌,这里要选择Gitee API令牌配置。

image-20210526205734866

接着将api令牌输入即可,id和描述任意

image-20210526205807430

Gitee API令牌的获取

登录gitee之后,访问如下网址:https://gitee.com/profile/personal_access_tokens,然后生成新的令牌:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yvmg1iR6-1622036752989)(E:\学习笔记\StoragePicture\image-20210526210017786.png)]

填写令牌的描述:

image-20210526210040206

提交之后输入密码即可查看私人令牌,而且该令牌只显示一次,要妥善保存。将该私人令牌填入刚才的Jenkins Gitee APIV5私人令牌即可。

配置完成之后可以测试是否能成功连接:

image-20210526210348920

创建自动构建任务

点击新建Item创建任务:

image-20210526210512404

创建任务时要选择构建maven项目,如果没有这个选项的话要去安装maven插件。这里还要注意任务的名称,Jenkins会根据任务名称生成指定的文件夹,通过git获取的项目源码会存在该文件夹下,这里后面会用到。

image-20210526210447836

然后要进行任务的配置:

描述可以随意写,表明任务的主要作用即可

image-20210526210743858

然后要选择丢弃旧的构建:

image-20210526210836184

源码管理

接着在源码管理时要根据仓库的地址进行管理:

image-20210526210930480

git仓库的地址就是我们git clone使用的地址,接着还要配置Credentials,这里我们使用Username with password类型的配置:

image-20210526211029243

如果git仓库是自己所有的话就填写自己Gitee的账号和密码(仓库的成员也可),否则要填写仓库成员或仓库拥有着的gitee账号和密码

填写完毕后选择我们刚配置好的Credentials。如果这里没有标红就证明没错误,例如:

image-20210526211248902

构建触发器

这里我们选择webhook构建触发器,在gitee的webhook中要填写此处的URL:

image-20210526211644995

然后点击生成产生webhook的密码:

image-20210526211456161

生成密码之后要去git仓库进行操作。

image-20210526211601408

在创建webhook时要填写Jenkins中生成的网址和密码,然后添加即可

image-20210526211715139

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

image-20210526212228275

这里我们指定全局命令即可:

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服务完成"

当配置完成以后就可以开始构建了:

image-20210526212957777

构建完成后我们可以查看构建结果,在控制台输出中可以查看这次构建的日志:

image-20210526213130365

在左下角也可以看到构建的成功和失败,红色代表失败:

image-20210526213157942

最后

当我们修改项目并且提交的git仓库之后,Jenkins会自动帮助我们构建,这里就是webhook的作用。

通过Jenkins给我们带来了极大的遍历。我们很方便地进行项目的部署,不再做哪些重复的操作,将我们从这些重复的操作之中解脱出来,提高开发的效率。

感谢阅读到最后的读者,有什么问题可以在评论区一起讨论哦!

参考

初生牛犊被人煮

无意的根本

原文链接:https://blog.csdn.net/wyg1973017714/article/details/117306362



所属网站分类: 技术文章 > 博客

作者:你看我可爱不

链接:http://www.javaheidong.com/blog/article/207361/acab17b9b98be808e8fa/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

8 0
收藏该文
已收藏

评论内容:(最多支持255个字符)