使用Jenkins部署Spring Boot项目和war包项目_jenkins 支持1.8的war 版本-程序员宅基地

技术标签: Jenkins  Java高级  jenkins部署jar包  jenkins部署war包  

Jenkins是自动化部署的神器,今天就讲讲怎么使用Jenkins部署SpringBoot项目。

一、环境说明

JDK1.8,MAVEN3.5,CentOS7,Jenkins:2.178

一、Linux下安装JDK

1、登录Oracle官网下载Linux环境下的jdk1.8的压缩包,jdk-8u211-linux-x64.tar.gz

2、解压,tar vxf jdk-8u211-linux-x64.tar.gz

3、配置环境变量,vim /etc/profile,在最后加上

export JAVA_HOME=/usr/jdk1.8.0_211
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

4、修改完成之后,使其生效,source /etc/profile

5、输入java -version 返回版本信息则安装正常。

二、Linux下安装MAVEN

1、登录Apache官网下载maven压缩包,apache-maven-3.5.4.tar.gz

2、解压,tar vxf apache-maven-3.5.4.tar.gz

3、配置环境变量,vim /etc/profile,在最后加上

export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=${PATH}:${MAVEN_HOME}/bin

4、修改完成之后,使其生效,source /etc/profile

5、输入mvn -version 返回版本信息则安装正常。

三、配置防火墙

关闭防火墙:systemctl stop firewalld

查看防火墙状态:systemctl status firewalld.service

四、Jenkins安装

 Jenkins安装方式有很多,但是推荐使用的是用yum安装

1、下载Jenkins

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

yum -y install jenkins

2、修改jenkins端口

       jenkins默认的运行端口是8080,但是如果这个端口本地已经被占用了,得修改一下jenkins的配置文件,文件的位置在/etc/sysconfig/jenkins。我本地的8080端口已经被占用,我就修改成了8889。

3、启动jenkins并设置为开机自启

systemctl start jenkins,启动jenkins

systemctl enable jenkins,设置开机自启

systemctl status jenkins,查看状态,处于running,代表已经启动了

注意:如果你是自己下载jdk的压缩包解压的而不是用yum安装的,启动会报错,可以使用systemctl status jenkins看报错信息,因为我们是用yum安装的jenkins,其默认也是是用默认的yum方式安装的jdk,因此需要修改/etc/init.d/jenkins,在这里面加上你自己安装的jdk的目录就行了。

可以看到启动信息中提示了,没有/usr/bin/java目录,这是使用yum默认安装的jdk的位置

修改配置文件,vim /etc/init.d/jenkins,在配置文件中加上你自己自定义安装的jdk的目录:

保存以后再运行systemctl daemon-reload命令即可重启成功。

 

 

五、Jenkins插件的安装和配置

1、安装成功以后,浏览器访问你的ip+端口,我的是192.168.0.75:8889

        第一次启动jenkins,它会自动生成一个密码,它会将这个密码生成放到一个固定的地方,浏览器访问的时候会告诉你该密码的位置,/var/lib/jenkins/secrets/initialAdminPassword,去找到这个密码,cat /var/lib/jenkins/secrets/initialAdminPassword,复制过来。

2、等待一会以后会出现以下的页面,选择安装插件,选择第一个

3、下面就是等待插件安装成功

注:插件一次可能不会完全安装成功,可以点击Retry再次安装。直到全部安装成功 

4、配置用户名密码,插件安装成功以后让你创建一个管理员用户,也可以点击右下角的使用admin账号继续,看个人喜好

5、实例配置,这一步不需要修改东西,点击保存并完成

 6、点击开始使用Jenkins

7、登录成功以后的页面: 

8、若想修改管理员的密码或者新增一个用户,则点击Manage Jenkins--》下拉找到Manage Users,点击进去

 

 

2、全局工具配置,还是点击系统管理--》Global Tool Configuration

       2.1 配置jdk,点击新增JDK

默认是你选择jdk版本,然后jenkins从对应的网站下载,我们已经安装过了,不需要自动安装了,把自动安装勾选掉,就会出现让你配置你已经安装的jdk的路径了。 

 

    2.2 下拉找到maven,同理配置maven

    2.3、点击保存,就配置好了jdk和maven 

3、插件安装,默认已经安装了足够用的插件,大部分不需要我们自己安装了,但是还得安装Maven Integration,publish over SSH。

      点击Manage Jenkins--》Manage Plugins--》Available,勾选需要安装的插件,点击直接安装或者下载重启后安装

         

 

4、配置SSH

        如果你jenkins和要部署的项目放在一台服务器上,你可以不用配置SSH,因为这个是远程部署用的,就是你jenkins和你的应用程序不在一个服务,你要跨服务器操作用的。但是最好还是配置一下,万一以后其他的项目在另一台服务器,到时候还得配置,太麻烦。

       配置SSH有两种方式,一种是使用密钥,一种是使用账号密码,使用密钥的方式太麻烦了,需要在服务器生成密钥,然后配置,而使用账号密码的方式只需要在jenkins控制后台进行配置就好了,因此我们选用第二种方式配置。

       点击系统管理--》Configure System

六、部署项目

1、选择创建一个新任务,然后输入项目名,选择构建maven项目,点击确定

2、勾选Discard old builds(丢弃旧的构建),选择是否备份被替换的旧包。我这里选择备份最近的5个

3、源码管理,选择svn,然后输入url,再点击添加,输入svn的账号密码

 例如:SVN 地址:http://192.168.0.xx/svn/xxx

4、构建触发器,无需更改

5、构建环境,勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来

 6、Build,输入打包前的 mvn 命令,如:clean install -Dmaven.test.skip=true -Ptest,意思是:排除测试的包内容,使用后缀为 test 的配置文件。

 7、Post Steps,选择Run only if build succeeds

       然后点击Add post-build step,如果你的应用程序服务器和jenkins在一个服务器上,你可以选择Execute sell,执行shell命令,添加shell命令,例如将打好的war包丢到tomcat的webapps目录下,然后启动tomcat,或者直接用java -jar +jar包,直接启动jar包。因为我的jenkins和应用程序不在同一个服务器上,我这里选择Send files or execute commands over SSH,用ssh登录应用程序的服务器,然后执行命令或者脚本。

       Jenkins是将svn或者git上的源码下载下来,自动下载到你jenkins安装目录下的workspace下(使用yum安装的目录是/var/lib/jenkins/workspace),同时会用maven将代码进行打包,放在下载项目的target文件下。然后会根据配置的应用程序服务器上的位置(下下图中的Remote directory),将生成的jar包或者war包从jenkins的服务器拷贝到应用程序的服务器对应的文件夹中。然后启动相应的脚本或者命令运行这个项目。

8、点击保存即可

9、部署项目

等执行完毕就可以访问了。

注意:

       若jenkins和项目是放在同一台服务器上的,如果是jar包,可以在上面步骤7选择选择shell,然后执行shell命令,例如java -jar *.jar。如果是war包,可以将启动停止tomcat的命令封装成一个脚本,放在服务器上,然后用shell启动即可。但是这里有个问题,jenkins本身的工作是构建项目,而不是部署项目,所以在执行完打包的工作以后并不会执行启动tomcat的start.sh命令,会把子进程都杀死,因此可以在脚本上加BUILD_ID=DONTKILLME,网上有的人说不能用,有的人说能用,但是我的能用。

       若jenkins和项目不是放在同一台服务器上的,那么步骤7就得选择ssh的方式了,我的项目就是不放在一个服务器上的。还是那样,如果是jar包,可以直接写启动命令。如果是war包,需要tomcat启动,最好写一个脚本,放在项目的那个服务器上,通过ssh进行远程启动这个脚本,但是脚本中要记得加 BUILD_ID=DONTKILLME。

若jenkins执行脚本提示没有权限,则在/etc/sudoers.d/下创建一个jenkins文件,然后在文件中加上如下:

Defaults:jenkins !requiretty

jenkins ALL=(ALL) NOPASSWD: ALL

然后再在jenkins的启动脚本中加上:sudo 即可

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaoye319/article/details/90412761

智能推荐

c语言实现文件移动\复制\重命名\删除等函数_c语言 copy 文件 api movefile-程序员宅基地

文章浏览阅读7.6k次。1.复制文件,定义与调用用例BOOL WINAPI CopyFile( __in LPCTSTR lpExistingFileName, __in LPCTSTR lpNewFileName, __in BOOL bFailIfExists);//CopyFile(srcfilepath, dstfilepath, 0_c语言 copy 文件 api movefile

SAP-ABAP-小计收起/折叠明细项目-只显示小计内容_sap小计折叠-程序员宅基地

文章浏览阅读1.5k次。单个小计收起明细:报表数据->合计->按照维度小计->点击小计维度字段(折叠所选内容) 或者 点击合计字段 左侧小点。 所有小计收起明细:报表数据->合计->按照维度小计->小计->下钻总计级别->选择对应级别->回车 ..._sap小计折叠

IIS7应用程序池停止后,如何自动启动_iis 应用程序自动启动-程序员宅基地

文章浏览阅读1.6k次。我的环境:win2008R2 64位+IIS7.0从windows事件里找到错误原因:应用程序池“abc”将被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。这个应用程序池停止后,它就无法自动启动了,导致网站出现503错误网上搜索千篇一律的解决办法是:给IIS Admin Service添加NetWork Service用户权限(本地启动、本地激活)这种说法并不完..._iis 应用程序自动启动

Linux java jvm 启动默认内存最大值-Xmx调整为物理内存的80%脚本_eden space 1048576k, 100% used-程序员宅基地

文章浏览阅读6.2k次。java -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps -XX:-PrintCommandLineFlags -Xmx`free -m | grep Mem\: | awk '{print $2}' | xargs -i expr..._eden space 1048576k, 100% used

maven学习资源_maven推荐学习资源-程序员宅基地

文章浏览阅读222次。易百网http://www.yiibai.com/maven/---------------------------------------------------------【笔记】远程仓库在 pom.xml 文件这样: java.net https://maven.java.net/content/repositories/publ_maven推荐学习资源

机器学习大部分是用Python去实现,是否可以用Matlab去做机器学习呢?_机器学习只能用在python吗-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏6次。而matlab刚开始主要是为了数学计算开发的一门商用软件,但是随着他的功能的更新,matlab的功能不紧止步于数学计算中,开发了更多的功能,在计算、工程等领域有着强大的功能,深受研究者的热爱,但可惜它是商用的,不开源!在做机器学习的过程中,很大一部分人都是选择python来做,原因在于python的编程也简单,同时python提供了比较多的封装好的机器学习包,导入就可以直接用,方便实用。总之,matlab在做机器学习上的优势是有的,就是其是商用的,不开源的,进而更多的人选择python来做。..._机器学习只能用在python吗

随便推点

MSB8003: 未定义 WindowsSDKDir 属性_msb800未定义windows sdkir属性-程序员宅基地

文章浏览阅读5.7k次。warning MSB8003: 未定义 WindowsSDKDir 属性。可能找不到某些生成工具。可能找不到某些生成工具。VS三大版本的对比分析VS运行出错用Visual Studio Installer 修复一遍就行了安装问题,修复一下,,社区版的应该没什么大问题。Visual Studio Community毕竟嘛,社区版,也可以理解为个人版。适用于学生、开源和个人等等。一些新手用来学习是个不错的选择。该版本有相对完备的免费IDE。可用于开发 Android、iOS、Windows 和_msb800未定义windows sdkir属性

50M/s, Onedrive直链提取-IDM实现满速下载-程序员宅基地

文章浏览阅读4.8w次,点赞9次,收藏30次。50M/s, Onedrive直链提取+IDM实现满速下载博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议本文永久链接是:https://blog.nxingcloud.co/posts/a3ad802e.htmlOneDrive虽然嫖到了5T但是速度慢到极致是不是很不甘心,心里发痒?别急!OneDrive的真正实力远超你想象!今天,我就来教大家如何用oneindex+IDM让你的OneDrive下载速度爆表。话不多说,正文开整!!!国内网盘现状_onedrive直链

【ROS-数据格式理解】PointCloud2格式理解fields-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏38次。【ROS-数据格式理解】PointCloud2格式理解 1、PointCloud2消息格式2、PointCloud2 消息格式例子3、理解其中的fields1、PointCloud2消息格式具体官方数据http://docs.ros.org/en/jade/api/sensor_msgs/html/msg/PointCloud2.html在ros中查看如下:std_msgs/Header header uint32 seq time stamp string frame_iduint3_pointcloud2

php 文章浏览数_重复计数,php+mysql文章浏览次数统计及发布时间-程序员宅基地

文章浏览阅读85次。session_start();$stsfile = "10001.php";$nowtime = time();date_default_timezone_set("Asia/Chongqing");//设置时间标准If (!isset($_SESSION['article']) || $_SESSION['article'] != $stsfile ) //判断用户是否在线{$link = m..._php+myqsl文章阅读量代码

图像噪声与去噪-程序员宅基地

文章浏览阅读3.4w次,点赞17次,收藏139次。图像的空域噪声以及二维降噪算法介绍1图像噪声的成因  图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声,机械噪声,信道噪声和其他噪声。因此,为了抑制噪声,改善图像质量,便于更高层次的处理,必须对图像进行去噪预处理。2图像噪声的特征  图像噪声使得图像模糊,甚至淹没图像特征_图像噪声与去噪

Python Web 之Flask基础(一)_python flask修改了视图函数的函数名-程序员宅基地

文章浏览阅读536次,点赞4次,收藏4次。文章目录Flask 框架基础Flask 搭建创建虚拟环境安装 Flask测试Flask 的基本使用路由视图函数请求与响应请求响应Flask 框架基础Flask 搭建Flask 1.0 文档依赖当安装 Flask 时,以下配套软件会被自动安装。Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。Jinja 用于渲染页面的模板语言。MarkupSaf..._python flask修改了视图函数的函数名

推荐文章

热门文章

相关标签