一.安装jenkins
1.1进入jenkins官网下载jenkins war包,上传到服务器/usr/local目录。
1.2执行启动jenkins命令,(注意jenkins版本需要的jdk版本)
nohup /usr/local/java11/bin/java -Djava.awt.headless=true -jar /usr/local/jenkins.war --webroot=/jenkins/war --httpPort=8020 &
1.3 访问Jenkins页面: http://ip:8020
二.安装git拉取项目
2.1 服务器安装git,执行安装命令
yum install git
2.4 创建jar目录,用于放入jenkins打包的jar,并在该目录下创建启动脚本
mkdir -p /data/jar
编写shart.sh脚本
cd /data/jar
vim start.sh
脚本内容
#jar名称
Tag="summarize-0.0.1-SNAPSHOT.jar"
# 检查进程状态
pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
echo -n "boot ( pid $pid) is running"
echo
echo -n $"Shutting down boot: "
pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
echo "kill boot process"
# kill "$pid"
kill -9 "$pid"
fi
else
echo "boot is stopped"
fi
# 启动项目
nohup java -Xmx2g -Xms2g -Xmn2g -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -Dappliction=$Tag -jar $Tag > console.out 2>&1 &
三.Jenkins配置
3.1 全局属性环境变量,添加如下配置,该配置解决执行start.sh脚本不生效问题
键:LANG
值:zh_CN.UTF-8
键:BUILD_ID
值:TEST
3.2 配置jenkins任务,选择自由风格
3.3 源码管理 ,填写项目地址,票据,分支信息
3.4 构建触发器,如果选择Gitee webhook 触发构建,需要在 Gitee webhook 中填写 提示的地址,并生成webhook密码,将密码填到gitee的webhook配置中。
3.5 配置Build Steps,选择执行shell
shell脚本内容,maven需要提前上传到/usr/local目录,配置settings.xml文件。
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true
#移动打包的jar到目录
mv target/{项目打包的jar名} /data/jar/#进入目录
cd /data/jar
chmod 777 start.sh#启动脚本
sh start.sh
保存之后构建即可自动化部署服务了。
四.多台服务器部署服务
在生产环境中,服务部署需要同时部署到多台服务器并启动,那么该如何操作呢?其实只需要改下jenkins配置脚本内容,添加rsync命令同步文件夹到其它服务器,ssh远程连接执行脚本即可。(注:服务器之间需要提前配置免密登录)
source /etc/profile
#maven打包
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true#移动打包的jar到目录
mv target/summarize-0.0.1-SNAPSHOT.jar /data/jar#同步目录到远程服务器
rsync -avr /data/jar root@47.109.145.59:/data/jar
#远程连接,进入目录启动脚本
ssh root@47.109.145.59 "cd /data/jar; sh start.sh; "
#进入本地目录
cd /data/jar
chmod 777 start.sh#启动脚本
sh start.sh
五.使用docker启动
#maven打包
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true#移动打包的jar到目录
mv target/summarize-0.0.1-SNAPSHOT.jar /data/docker#进入docker目录,里面有dockerfile
cd /data/docker
chmod 777 dockerfile
chmod 777 cleanDocker.sh#执行停止并删除容器镜像
sh cleanDocker.sh
#构建镜像
docker build -t myapp .
#启动镜像
docker run -p 8080:8080 -d --name myapp myapp
dockerfile文件
# 基础镜像
FROM openjdk:8-jre
VOLUME /usr/app/
# 创建目录
RUN mkdir -p /usr/app/
# 设置工作目录
WORKDIR /usr/app
# 将JAR文件复制到容器中,注:jar包位置是dockerfile文件的相对路径
COPY summarize-0.0.1-SNAPSHOT.jar /usr/app/summarize-0.0.1-SNAPSHOT.jar
# 启动命令
ENTRYPOINT ["java","-jar","summarize-0.0.1-SNAPSHOT.jar"]
停止清理镜像脚本cleanDocker.sh
docker stop myapp
docker rm myapp
docker rmi myapp