APP下载
报价宝  ›  科技  › 

Jenkins一键分散式部署springboot专案

报价宝 来源:baojiabao.com 发布时间:2019-11-05 17:05:00 11月14日更新
报价宝综合消息Jenkins一键分散式部署springboot专案

外挂准备

1.maven专案外挂

检视系统管理-->外挂管理-->已安装外挂中,过滤框中输入Maven Integration plugin,搜寻是否已安装Maven Integration plugin外挂;若未安装,则可到系统管理-->外挂管理-->可选外挂中,过滤框中输入Maven Integration plugin,勾选中后点直接安装。2.节点管理外挂

操作步骤同上,该外挂名为Publish Over SSH。三、配置系统设定

1.配置全域性工具

在系统管理-->全域性工具配置中,配置Maven、Git、Gradle或Docker等全域性工具;这一步按需配置(本次例子只需要Maven),这里以配置Maven为例,如下图;maven配置

由于我虚拟机器上并没有安装maven,所以我选择使用的是自动安装。

2.系统设定

jenkins Location:URL为我们虚拟机器的ip地址加jenkins启动时开放的埠号(如下图);jenkins location

SSH Server管理(如下图):若需要多台,点新增再新增即可。需要注意的是,如果没有配置免密登入的话,需要点选高阶,勾选Use password authentication, or use a different key ,并在Passphrase/Password这一栏中输入虚拟机器远端登入密码。ssh server配置

3.新建maven专案

构建maven专案

4.设定

设定专案的构建策略与仓库地址General

源代码管理设定源代码管理

其中Credentials新增如下:输入仓库使用者名称和密码,描述是为了区分该验证是什么(jenkins会储存一系列我们使用的credentials)可写可不写,推荐写credentials设定

构建触发器构建触发器

build与post steps设定,这里并没有跳过测试,所以会在构建的时候进行测试build

若不知道pom.xml在哪,可以先执行一次构建,构建会把程式码克隆下来,我们可以在工作空间中看到,如下图所示工作空间

构建后操作中选择Send build artifacts Over SSH,因为我们在第2步系统设定中将SSH server远端工作目录为/usr/local,此处又将路径设定为jenkins-jar/,由此最终将jar包传输到服务器中的路径是/usr/local/jenkins-jar

选择构建后操作

设定构建后操作上一步中的Exec command是我们要执行的执令,此处运行了我自己写的一个叫hello.sh的启动指令码,同样,如果我们要一次部署到多台服务器上的话,只需要点选Add Transfer Set再和上图一样设定另一台服务器即可;点选储存。四、启动指令码编写

以上jenkins帮我们做了事情主要有如下几个:

从仓库中克隆程式码;maven的clean install;当build成功后,将相应的档案传输到我们指定的服务器中(此处传输的是jar包);定时重复上述步骤。由此可见,jenkins并没有使我们专案启动起来,为此我们需要编写启动指令码。

指令码内容大致如下(欢迎指正-)

#!/bin/bash

function killproject()

{

#由于我这边多个专案jar包名一致了,所以并没有用 ps -ef | grep jar包名 来查程序id,而是通过埠号来查的

project_pid=$(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)

if [ $project_pid > 0 ];then

echo "专案已经启动了,开始关闭专案,专案pid为: $project_pid "

kill -9 $(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)

echo '专案关闭成功,开始重启专案。。。'

else

echo "专案未启动,直接启动"

fi

}

function start_project()

{

source /etc/profile

echo '正在启动专案。。。'

cd /usr/local/jenkins-jar/

nohup java -jar demo-0.0.1-SNAPSHOT.jar >warpper.log &2>1 &

}

function check_project()

{

check_pid=$(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)

if [ $check_pid > 0 ];then

echo "project is start and pid = : $check_pid "

else

echo "project are not start"

fi

}

killproject

start_project

sleep 10

check_project

程式码分析,其中:

killproject()函式作用是检视系统中该专案是否已启动,若已启动,则先kill掉该程序,再启动;若未启动,则直接启动;start_project()函式作用是进入我的jar包储存路径,并后台执行,函式中的source /etc/profile目的是使专案可以后台启动(其实我没加的时候,后台启动专案一直不能用,报错找不到java环境);check_project()函式作用是检查专案是否正常启动,可以在jenkins控制台中看到输出资讯;sleep 10是为了等待我的springboot启动完,然后我们检视它的程序id.五、构建专案

点选立即构建,就可以完成专案的自动部署了。部分控制台输出

进入到虚拟机器中,使用netstat -lnp | grep 18099可以验证专案是否已启动。有时候可能会在控制台输出project are not start,我不是很清楚是否是我设定的睡眠时间短了(为此,我们初次测试可以去虚拟机器中检视专案是否启动)。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 手机价格 笔记本电脑价格 华为手机价格 红米手机价格