文章目录
简介
Jenkins是一个独立的开源自动化服务器,可用于自动执行与构建,测试,交付或部署软件相关的各种任务。
Jenkins可以通过本机系统软件包,Docker安装,甚至可以由安装了Java Runtime Environment(JRE)的任何机器独立运行。
能够部署使用Maven构建的java项目,使用npm构建的Node.js项目还有PyInstaller构建的Python应用。
本文仅涉及maven项目,jenkins官网:https://jenkins.io/
有关jenkins部署前端项目,请参考:https://blog.csdn.net/GY325416/article/details/84248817
下载安装
推荐rpm包安装:https://blog.csdn.net/GY325416/article/details/82560528
war包安装方式:https://blog.csdn.net/GY325416/article/details/84250071
项目部署
这有一个spring boot的eureka注册中心https://gitee.com/hello-piper/testGit.git,我将使用这个项目演示maven项目部署
部署流程(请予以重视)
A:即是jenkins所在机器, B:项目将要部署的机器
- A机器 从gitlab下载最新代码到本机
- A机器 使用maven打包项目,在target目录产生*.war包
- A机器 通过ssh将war包传输到B机器,并执行B的restart.sh脚本
- B机器脚本功能:将war包放到tomcat的webapps目录中,重启tomcat
如果项目是spring boot编写的可执行jar包,那么B的restart.sh脚本功能修改为重启jar就行了,具体后面会讲。
插件准备
仅仅Jenkins安装好其实做不了什么事情,还需要很多插件支持,前面已经自动安装了一部分,但是远远不够,这里给出需要用到的一些
点击 系统管理–>管理插件
- Maven Integration
- SSH
- Publish Over SSH
- Git Parameter
工具配置
以下是部署项目要用到的配置
配置jdk
点击 系统管理 --> 全局工具配置
配置maven
点击 系统管理 --> 全局工具配置
配置ssh
点击 系统管理 --> 系统设置 --> 最下面Publish over SSH --> SSH Servers
这里配置的是项目要部署的机器地址,可配置多个
项目空间准备
上面部署流程将war包传输到B机器之后我们需要启动这个war包,这样就需要有一个tomcat,还需要一个脚本,执行war包的复制过程,tomcat的启动过程。
将这些有关register项目的文件统一放到一个文件夹,我的项目目录如下
新建任务
新建maven项目,名字尽量和项目名称一致
配置项目分支和环境参数
使用maven进行构建
部署地址
这样配置之后就能将项目部署到192.128.1.202机器上了,当然你也可以远程到本机
war方式项目restart.sh脚本
#!/bin/bash -l
tomcat_home=/usr/local/app/engineering/apache-tomcat-8.0.53
jenkins_package=/usr/local/app/upload
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
echo "关闭$tomcat_home"
$SHUTDOWN
ps -ef |grep tomcat |grep $tomcat_home |grep -v 'grep'|awk '{print $2}' | xargs kill -9
#删除webapp文件夹
rm $tomcat_home/webapps/* -rf
#删除日志文件,如果你不先删除可以不要下面一行
rm $tomcat_home/logs/* -rf
#删除tomcat的临时目录
rm $tomcat_home/work/* -rf
#删除cataline文件
rm -rf $tomcat_home/logs/catalina*
#拷贝打好的war包到tomcat
cp -f $jenkins_package/engineering.war $tomcat_home/webapps/engineering.war
sleep 1
echo "启动$tomcat_home"
$STARTTOMCAT
sleep 3
#看启动日志
#tail -f $tomcat_home/logs/catalina.out
jar方式项目restart.sh脚本
#!/bin/bash
# 项目地址
pro_path=/usr/local/app/share-cloud-config/
# jar包名称
jar_name=share-cloud-config.jar
# 启动参数
JAVA_OPTS='-server -Xms1024m -Xmx1024m'
cd $pro_path
pwd
# 启动jar包命令
runjar="nohup /usr/local/software/jdk1.8.0_141/bin/java -jar ${JAVA_OPTS} ${jar_name} 1>log.log 2>&1 &"
# 查看这个jar是否已经启动
if test $(pgrep -f $jar_name|wc -l) -eq 0
then {
echo "应用没有启动" # 没有启动
} else {
echo "应用已经启动" # 已经启动 清理掉
kill -9 $(pgrep -f $jar_name)
}
fi
rm -rf $pro_path/$jar_name # 删除原来的jar
cp /usr/local/app/upload/$jar_name $pro_path # 复制一份新的jar
eval $runjar #启动jar
sleep 3
新建任务图解
注意
jenkins启动A项目,如果B项目依赖了A项目,那么在A项目启动过后,会重启B项目