记录自己使用Jenkins部署一个maven微服务项目到Linux上的过程
本文是记录自己使用Jenkins部署一个maven微服务项目到Linux上的过程,我Jenkins也是一知半解,有理解的不对的地方,还望大家斧正。
文章目录
前言
前阵子想将自己写的微服务部署到Linux上测试一下,于是使用Jenkins,这里记录一下部署的过程,也算是一个流程梳理,再学习的过程。
这里用到的服务就是一个简单的springboot项目,使用maven管理依赖。
部署前需要用做的准备,如安装Jenkins、jdk、maven等,大家可以参照这片文章做准备:
使用Jenkins的前置操作
一、自动化部署过程原理
部署过程如下:
需要编写一个shell脚本来执行这个过程。
具体的创建Jenkins任务的过程为
1.创建jenkins任务
2.配置git参数
3.填写Server信息
4.填写构建语句(shell脚本),实现自动部署。
我的理解就是使用Jenkins,先从git上下载项目源码,根据命令进行打包,然后将jar包从Jenkins的工作空间转移到想要启动项目的目录,执行启动命令运行服务。
二、在Jenkins上创建任务?
1.打开Jenkins的工作台页面
在Jenkins的工作台页面上点击新建任务
2.开始创建任务
选择新建一个maven项目
三、任务配置
1.进入任务后,点击配置,配置构建中要进行的操作
2.具体的配置
因为选择的是maven项目,进来之后的目录是这样的
1.General
我没有进行配置
2.源码管理
将要部署的项目的源码地址以及分支信息填写进去。
3.构建触发器和构建环境
这里我参照其他的项目做的,我看没有选择,我也就没有选择。
4.Pre Steps
# 如果需部署的项目是配置的git项目(父项目)中的一个子项目文件目录
#此路径还需加上从父项目路径到子项目的文件路径
cd ${WORKSPACE}
# 执行maven命令进行清理、打包、选择prod配置、跳过单元测试
/opt/apache-maven-3.6.3/bin/mvn clean package -Pprod -Dmaven.test.skip=true
5.Build
6.Post Steps
这里我选择 构建项目后执行一个:通过SSH发送文件或执行命令
因为我司Jenkins的服务器和要部署项目的服务器不是一个
具体信息如下:
1.需要把jenkins打包好的项目复制到测试服务器
企业: jenkins所在的服务器和我们项目运行时的服务器应该不是同一台机器。
jenkins编译打包好的软件在jenkins所在的服务器。
具体的转移命令如下:
# backup jar file
mkdir /opt/你的项目启动目录
cd /opt/你的项目启动目录
# 拷贝所有的Jenkins打包的bak文件
cp *jar $(ls *jar)_$(date +%Y%m%d%H%M).bak ; ls
2.配置转移的具体路径
上图2步骤的详解
3.将jar包拷贝成功后,启动项目
# kill and restart
mkdir -p /opt/你的项目启动目录
cd /opt/你的项目启动目录
source /root/.zshrc
export pid=$(jps -l | grep -E "需要部署的项目名-[0-9].*.jar" | awk '{ print $1}' )
echo 'kill '${pid}
kill ${pid} ; sleep 10 ; kill -9 ${pid} ; sleep 10
cd /opt/你的项目启动目录
nohup java -jar -Xms256m -Xmx384m -Dskywalking.agent.service_name=c14-helmet-video-processing -Dskywalking.collector.backend_service=192.168.111.22:11800 -javaagent:/opt/plugins/agent/skywalking-agent-8.14.0/skywalking-agent.jar c14-helmet-video-processing*jar> /dev/null 2>&1 & ; sleep 10
export pid=$(jps -l | grep -E "需要部署的项目名-[0-9].*.jar" | awk '{ print $1}' )
echo start process ${pid}
7.构建设置和构建后操作
我这里没有配置,这里可以选择配置构建后的一些操作,如发送邮件通知、完成构建后再执行其他构建操作。
四、立即构建
控制台输出:
总结
以上就是就是我在使用Jenkins构建一个maven项目中的操作,有些功能也没搞太清楚,有大佬看出哪里有问题的话请告诉我,我再改正,谢谢大家。