使用 jenkins + gitee + docker 部署 springboot 项目
没有安装 jenkins 的可以参考我这篇文章进行安装
通过Docker安装Jenkins
安装几个常用的插件
提前说一下,下载好插件之后,需要重启 jenkins 才能生效
gitee (下面会使用到)
Jersey 2 API (这个插件有些 Jenkins 版本会自带,如果不自带那就自行下载。如果没有这个插件的话,连接 gitee 的时候会提示权限不够)
Docker
Publish Over SSH
Chinese (汉化)
gitlab
以上几个就是比较常用的插件,如有其他需求可自行下载其他插件
下载好插件记得重启 jenkins
安装JDK(如已安装可以直接跳过)
下载jdk17
这个是下载链接 Java Downloads | Oracle
使用文件上传工具把下载好的文件上传到 Linux 中
我把文件上传到了 /env 下
把文件解压到当前目录或指定目录(我这里解压到当前目录)
tar -zxvf jdk-17_linux-x64_bin.tar.gz
配置环境变量
# 修改配置文件
vim /etc/profile
# 把以下配置内容写入到文件末尾即可
# 我把jdk解压到了 /env 目录下 所以 就是 /env/jdk-17.0.11
# 改成自己的 jdk 安装目录即可
export JAVA_HOME=/env/jdk-17.0.11
# 下面四条语句不用改,直接复制粘贴即可
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
重新加载配置文件
source /etc/profile
查看配置是否生效
java -version
出现 java 版本即为生效
安装 maven (如已安装可以直接跳过)
下载 maven
这个是 maven 各版本下载地址
我这里下载的是 maven-3.8.4 的版本。如果和我一样安装的是 jdk17 的朋友,maven 最低要下载 maven-3.8.3 的版本
使用文件上传工具把下载好的文件上传到 Linux 中
我把文件上传到了 /env 下
把文件解压到当前目录或指定目录(我这里解压到当前目录)
tar -zxf apache-maven-3.8.4-bin.tar.gz
配置阿里云镜像
# 修改解压后 maven 文件夹下的 config 文件夹下的 settings.xml 文件
vim apache-maven-3.8.4/conf/settings.xml
# 内容
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
配置环境变量
vim /etc/profile
# 添加的内容
# 我把 maven 解压到了 /env 目录下
# 所以我的 MAVEN_HOME 为 /env/apache-maven-3.8.4
export MAVEN_HOME=/env/apache-maven-3.8.4
export PATH=$MAVEN_HOME/bin:$PATH
重新加载配置文件
source /etc/profile
查看配置是否生效
# 命令
mvn -v
出现 maven 版本即为生效
重新挂载 jenkins 容器
先把 jenkins 容器停掉 docker rm -f jenkins
我们要重新启动 jenkins 把 maven 的文件地址信息挂载上去
docker run -d \
-v /mydata/jenkins_home:/var/jenkins_home \
-p 8080:8080 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /env/apache-maven-3.8.4/:/usr/local/apache-maven-3.8.4 \
--name jenkins \
jenkins/jenkins:lts
# 这里是我随手打的 \ 注意空格 跑不起的话就 手动去掉 \ 使用空格隔开就行,但基本上没问题
# 解释一下 -v /env/apache-maven-3.8.4/:/usr/local/apache-maven-3.8.4 前面是本机刚才配置的maven地址,后面对应挂载的地址
在 jenkins 中配置 maven
按照图中的顺序点击即可
往下滑就会出现下面这个页面
准备一个 SpringBoot 项目
项目结构
在 pom.xml 中配置打包插件
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
编写 application.yml 文件
# 项目名称spring:application:name: test
# 服务端口server:port:8082
编写简单的 controller
importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;/**
* 作者:晚枫
* 时间:2024/6/6 10:29
*/@RestControllerpublicclassHelloController{@GetMapping("/hello")publicStringhello(){return"恭喜你成功使用 docker + jenkins + gitee 部署 SpringBoot 项目";}}
创建 Dockerfile 文件
编写 Dockerfile 文件
# 指定 jdk 版本
FROM openjdk:17
# 暴露的服务端口
EXPOSE 8082
# 该指令将复制当前宿主机中指定文件 test-0.0.1-SNAPSHOT.jar 到容器中的指定目录 test.jar 中
ADD test-0.0.1-SNAPSHOT.jar test.jar
# 因为在容器中 jar 包的名称为 test.jar 所以这里要使用 /test.jar
ENTRYPOINT ["java", "-jar", "/test.jar"]
将准备好的 SpringBoot 项目上传到 gitee
在 jenkins 中配置 gitee
这一步需要使用 Gitee 插件 和 Jersey 2 API 插件。如果没有下载需要先进行下载,下载完成后重启 jenkins
登录 gitee 获取私人令牌
私人令牌获取地址
第一步
第二步
在系统配置中配置 gitee
滑到 gitee 配置
第一步
第二步
第三步
在 jenkins 中新建自由项目
新建任务
创建自由风格的任务
在源码管理中配置 gitee
添加 gitee 账号密码
选择添加好的账号密码
配置 Gitee webhook
第一步
第二步 滑到下面
然后来到自己的 gitee 仓库
第一步
第二步 添加 webHook
在 Build Steps 中配置 maven
在 Build Steps 中配置 shell 脚本
shell 脚本 (需要根据自己的情况进行修改)
#!/bin/bash
# 这个就是新建任务时让记住的名字
SERVER_NAME=test
# 源jar名称,mvn打包之后,target目录下的jar包名称
JAR_NAME= "test-0.0.1-SNAPSHOT"
# jenkins下的目录
JENKINS_HOME= "/var/jenkins_home/workspace/test"
# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
echo "结束进程完成"
# JENKINS_HOME下的jar包所在目录
cd /var/jenkins_home/workspace/test/target
# 把文件中的Dockerfile放在跟jar包一个位置,方便我们打成镜像
cp /var/jenkins_home/workspace/test/Dockerfile /var/jenkins_home/workspace/test/target
# 修改文件权限 JAR_NAME
chmod 755 test-0.0.1-SNAPSHOT.jar
echo "看看docker能不能用"
docker -v
echo "停止容器"
# 停止容器
docker stop test
echo "删除容器"
# 删除容器
docker rm test
echo "删除镜像"
# 删除镜像
docker rmi test
echo "打包镜像"
# 打包镜像
docker build -t test -f Dockerfile .
echo "运行镜像"
# 运行镜像
docker run -d -p 8082:8082 --name test test
开始构建项目
第一个可能会遇到的问题
在开始构建项目前提前说一下,如果是看通过Docker安装Jenkins安装的 jenkins 话,在构建的时候可能会出现拉取拉取镜像超时的问题,因为在通过Docker安装Jenkins 文章中把 docker 的阿里云镜像加速去掉了。
如果不会配置的可以看我这篇文章 Docker 配置阿里云镜像加速
第二个可能会遇到的问题
就是在构建的时候,可能会提示 permission denied while trying to connect to the Docker daemon socket at unix 这个错误,就是权限不够导致的,我试了好多办法都没有解决。
最后只能使用以下命令
sudo chmod 666 /var/run/docker.sock
需要注意的是,这种方法虽然可以解决权限问题,但是会带来一定的安全风险,建议仅在调试和测试过程中使用,生产环境中尽量不要使用。
如果哪位大佬有其它办法可以解决的,请麻烦您私信我,非常感谢!!!!
解决完这两个问题之后就可以开始构建了!!!!
第一步
第二步
等待构建
再去 docker 看一下
docker ps
可以到项目已经跑起来了
检验成果
打开浏览器在地址栏输入 ip:8082/hello 回车
看到这个界面就说明已经成功了!!!!!!
版权归原作者 晚枫2000 所有, 如有侵权,请联系我们删除。