快捷搜索:  汽车  科技

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)jenkins location2.系统设置1.配置全局工具maven配置由于我虚拟机上并没有安装maven,所以我选择使用的是自动安装。

插件准备

1.maven项目插件

  • 查看系统管理-->插件管理-->已安装插件中,过滤框中输入Maven Integration plugin,搜索是否已安装Maven Integration plugin插件;
  • 若未安装,则可到系统管理-->插件管理-->可选插件中,过滤框中输入Maven Integration plugin,勾选中后点直接安装。

2.节点管理插件

  • 操作步骤同上,该插件名为Publish Over SSH。

三、配置系统设置

1.配置全局工具

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

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(1)

maven配置

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

2.系统设置

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

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(2)

jenkins location

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

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(3)

ssh server配置

3.新建maven项目

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(4)

构建maven项目

4.设置

  • 设置项目的构建策略与仓库地址

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(5)

General

  • 源码管理设置

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(6)

源码管理

  • 其中Credentials添加如下:输入仓库用户名和密码,描述是为了区分该验证是什么(jenkins会保存一系列我们使用的credentials)可写可不写,推荐写

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(7)

credentials设置

  • 构建触发器

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(8)

构建触发器

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

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(9)

build

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

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(10)

工作空间

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

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(11)

  • 选择构建后操作

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(12)

  • 设置构建后操作
  • 上一步中的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.

五、构建项目

  • 点击立即构建,就可以完成项目的自动部署了。

jenkins创建环境服务(Jenkins一键分布式部署springboot项目)(13)

部分控制台输出

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

猜您喜欢: