基于Docker+Jenkins实现自动部署SpringBoot+Maven项目

时间:2024-06-07 21:10:47

安装Docker随便根据其他教程安装即可,本文着重讲jenkins的安装与环境配置。

一、安装jenkins

1.运行命令搜索Jenkins

docker search jenkins

deprecated 是弃用的意思,第一条搜索记录就是告诉我们 jenkins 镜像已经弃用,让我们使用 jenkins/jenkins:lts 镜像名进行拉取。

2.拉取Jenkins镜像 

docker pull jenkins/jenkins:lts
docker images #查看镜像

3.启动Jenkins

先在宿主机创建Jenkins的挂载目录

 mkdir -p /home/jenkins/workspace

 启动容器 

docker run -uroot -d --restart=always --privileged=true  -p 9001:8080 -p9002:50000 \
 -v /home/jenkins/workspace/:/var/jenkins_home/workspace \
 -v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
 --name jenkins jenkins/jenkins:lts

4.访问及注意事项

如果使用的是阿里云或者腾讯云等服务器,需要打开防火墙规则,开放容器映射的宿主机的端口9001,9002。打开后页面

  进入容器中查询密码并输入后继续

 docker exec -it -uroot jenkins bash # -uroot 是以管理员身份登入容器
 cat /var/jenkins_home/secrets/initialAdminPassword

5.安装,安装推荐插件即可。 

创建一个jenkins账号,如果不想创建使用默认的admin即可,如果是公网,admin账号需要修改密码。如是新创建的账号就不用。

 然后进行jenkins主界面

二、环境配置

1.插件安装

本次使用的是gitee作为代码仓库,需要安装gitee插件

maven 插件:Maven Integration plugin

 

SSH远程连接插件:Publish Over SSH

2.环境配置

Gitee

进入jekins的系统设置,添加gitee令牌,如果不使用这个令牌模式,可以后续再新建流水线时再通过用户名和密码添加即可。

信息填写完成点击【测试连接】按钮,提示成功,说明设置gitee令牌设置正确。

Maven

进入jenkins的工具设置,选择版本,选自动安装

JDK

之前装的插件的作用就是可以选择自动安装jdk版本,新增安装Install from adoptium.net 模式并选择项目使用的jdk版本,后续会自动安装JDK。

3.构建Maven项目 

配置

添加源码仓库的地址,以及配置gitee账号密码后保存

 

 配置maven 构建命令 clean install -Dmaven.test.skip=true

 配置远程SSH连接,服务器ip,用户名,密码等,用来将打包好的jar包传输到远程服务器进行部署。

 信息填写完成之后,点击【Test Configuration】按钮,出现如下提示表示连接成功

 4.任务配置

 

exec command可以先不写,可以先部署下看是否可以将容器中的jar包传输到宿主机指定目录。
如果可以进行下面脚本的编写

#!/bin/bash
#====================docker-springboot=====================
echo 'kill docker-springboot-1.0-SNAPSHOT old ps'
pid=`ps -ef | grep docker-springboot-1.0-SNAPSHOT | grep -v grep|awk '{print $2}' `
if [ ! $pid ]; then
echo 'no need to kill'
else
kill -9 $pid
fi
echo 'ps killed and start new ps after 5s'
sleep 5
echo 'starting docker-springboot-1.0-SNAPSHOT .....'

cd /home/jenkins/jar
chmod 777 docker-springboot-1.0-SNAPSHOT.jar

nohup java -Xmx512M -XX:-UseGCOverheadLimit -jar docker-springboot-1.0-SNAPSHOT.jar > /home/jenkins/jar/logs/nohup.out &
echo 'docker-springboot-1.0-SNAPSHOT started!'

 创建restart.sh并编写上面的脚本,大致意思就是查询该jar包是否正在运行,如果正在运行,kill掉该进程,然后重新运行新的jar包。可以自己查看日志
注意里面的jar包名称和路径。文件夹必须存在,日志文件可以自己生成。

执行脚本时可能遇见 语法错误: 未预期的文件结尾”这个提示

百度后查到这个报错可能有两个原因:

1、确实存在语法错误,{}[]等前后个数不对等;

2、脚本格式,主要存在于在windows下编写的脚本,未能调整格式

 在notepad++中将格式改为UNIX  (编辑》文档格式转化》转为Unix),编码改为UTF-8 ( 编码》转为UTF-8),改好后如图

重新将该sh文件复制到centos中,重新执行 

5.任务构建

点击构建即可进行部署。

最后,构建后日志 

三、Jenkins+nginx 自动部署vue项目

连接地址

Jenkins构建打包部署前端Vue项目至Nginx-****博客