文档时间:
2024-05-07
jenkins一键发布原理个人理解:
本质就是通过jenkins 配置git地址,然后通过地址拉取代码到服务器上,
然后jenkins 再通过maven把拉取下来的进行打包。
再通过jenkins 配置的shell命令,在服务器上面运行项目就完成了。
环境:
centos 7.9
docker:25.0.3
docker-compose:v2.20.2
jenkins 2.440.1
gitee
远程linux工具的:Xterminal
任意一个已经测试好打包jar运行没问题的springboot项目。
(这里是用的gitee做源码管理,所以需要把这个源码上传到gitee上)
开始:
我这里使用的是云服务器,用的centos 7.9,先安装好docker和docker-compose。附教程:
linux安装docker及docker-compose 部署spring boot项目_linux docker 部署springboot-CSDN博客
准备好后创建一个目录,我这里使用的是/data/docker/jenkins,
然后创建jenkins的docker-compose.yml,需要注意,这里映射了宿主机的docker命令,加上映射的两个docker目录,才可以才jenkins上面运行docker命令。
version: '3.8'
services:
jenkins:
image: jenkins/jenkins:2.440.1
container_name: jenkins
ports:
- "9001:8080"
- "9002:50000"
volumes:
- ./data/jenkins_home/workspace :/var/jenkins_home/workspace
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
restart: always
privileged: true
user: root
然后在/data/docker/jenkins目录下运行
docker-compose up
运行后可以看见这样的,箭头处是初始密码。
成功运行后,直接通过端口访问:http://8.***.226.**:9001/,然后输入上面运行后日志打印出来的初始化密码。
选择安装推荐插件
等待安装
安装成功后会自动跳转到创建用户页面,如果安装有报错,能点继续就点继续,后面运行没问题就不用管。
直接点击保存并完成,这里不用改。
进来后就是这样,点击箭头位置。
选择插件安装
选择Available plugins,
安装 Maven Integration 、Publish Over SSH、Gitee
这个就是安装的记录
然后配置jenkins的maven,打包的时候需要用到。
2
3,我这里用的是maven的3.8.8版本。
配置完成后,再新建一个项目测试一下。
输入项目名称,然后选择Freestyle project,点击确认。
点击确认后的页面
然后往下滑找到源码管理,选择git,然后输入git的地址,再点击添加,添加git的凭证。
按图选择,然后输入账号和密码。点击添加。
添加凭证后,在Credentials下选择刚才添加的凭证。
然后选择Build Steps、选择增加构建步骤、调用顶层maven目标。
然后选择上面新增的maven,输入打包命令。再点击保存。
clean install -Dmaven.test.skip=true
项目保存好后,点击立即构建。等待下方的构建历史出现记录。
构建历史出现后,点击记录,然后点击控制台输出,可以查看打印的日志。
根据日志可以看出maven打包成功了,我们可以回到服务器上面,到jenkins的docker-compose.yml配置映射出来的目录下查看。根据如图可以看到当前项目一键打包成jar文件了。
到这里使用jenkins配置maven一键打包就成功了。
接下来再把打包好的通过shell命令直接运行,或者用docker运行。
我这里就说下docker运行,可以看见上面图片,项目根目录下面有个Dockerfile文件,
FROM java:8
MAINTAINER wto
VOLUME /tmp
ADD target/SbDemo1-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dfile.encoding=UTF-8","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18081","-jar","/app.jar"]
jenkins通过maven打包后,再用jenkins运行Dockerfile就可以运行项目了,
回到jenkins刚才新建的项目。选择配置。
按图选择添加构建步骤-执行 shell。
然后输入运行dockerFile的命令,需要注意三点:
1、cd命令的路径是容器里面的路径,不是宿主机的路径。
2、docker容器的名称不能有大写,我这里用的小写加-。
3、注意这里的shell命令是在jenkins的docker容器里面运行的,不是直接运行在宿主机上的。因为docker-compose文件里加了宿主机的docker命令映射,所以这里运行的docker命令是在宿主机上面运行的。
cd /var/jenkins_home/workspace/sbTest1
docker stop sb-test1 || true
docker rm sb-test1 || true
docker rmi sb-test1 || true
docker build -t sb-test1 .
docker run -d -p 8081:8081 --name sb-test1 sb-test1:latest
保存后点击立即构建。等一两秒构建历史就会出现构建记录。
查看构建记录的控制台日志就可以看见已经打包成功了,
最后回到云服务器,ctrl+c结束docker-compose运行的jenkins。然后输入命令后台运行jenkins。
docker-compose up -d
再输入命令 docker ps 查看已经运行的容器。
docker ps
到这里使用jenkins一键部署springBoot项目就成功了。
原本是想用docker-compose,但是没有找到jenkins的shell命令使用docker-compose的方法,如果有大佬会,麻烦教一下,感谢。
参考文档:
基于Docker+Jenkins实现自动部署SpringBoot+Maven项目_jenkins +docker-CSDN博客
Jenkins + Docker 一键自动化部署 SpringBoot 应用最精简流程-CSDN博客
如果有什么问题,欢迎大佬指正。
最后如果对你有一点点帮助,麻烦支持一下。
全国寄快递5元起,电影票8.8折。更多优惠微信关注公众号:【折价寄件】
感谢阅读!!!!