Jenkins-GitHub自动化部署博客系统后端SpringBoot项目

背景
- Jenkins部署vue项目
- Jenkins的启动与停止
- 这是配套项目,如果您当前没有看,也没关系。
- 但是你必须自己搭建过Jenkins。
- 我们脱离手动打包,上传jar,停止容器,构建新镜像,启动新镜像(发布)流程,让机器去完成。本文就是一个简单一键部署spring boot项目的例子。
拉取博客系统项目到服务器(也就是自己GitHub的Java项目)
Jenkins中新建job,配置job,选择第一个,自由风格。
点击保存后,进入配置job界面。
填写简单的描述,选择GitHub项目。填写GitHub项目地址。我的是私有的,也可以公开的。
源码管理选择git,把项目地址写进去。 会提示无法访问,需要配置账户密码,不知道怎么配置的,可以参考上一篇文章,详细步骤 入口:配置GitHub账户密码
配置触发器
保存job。这个时候,需要到GitHub设置web hook(就是通知Jenkins)
在GitHub项目点击settings。进入web hook配置,新增一个。 里面地址写你的服务器的地址+Jenkins端口。比如我的。
http://00.00.19.172:8080/jenkins/github-webhook/
必须是:github-webhook/结尾
构建环境配置
点击立即构建,先触发一次任务,看看代码拉取情况
代码拉取完成。查看工作目录中,是否有我们的项目代码
这个时候,你就得进入Jenkins工作目录,这个部署Jenkins的你应该知道在哪里,或者你可以在构建脚本中增加
pwd
在执行完成的时候,直接输出路径。
这是我的项目代码,已经拉取下来。(必须安装git)
如何编译spring boot项目?
安装maven
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
sudo yum install -y apache-maven
mvn -version
服务器中编译spring boot项目
直接在服务器进入项目根目录
//先把项目需要的依赖拉下来。尝试用主机直接编译。第一次下载依赖时间可能会比较长。后面就不需要再次下载了。
mvn clean
//这个命令下载了很多东西,耐心等待
mvn install
mvn clean install spring-boot:repackage -U
//打包很快,大概十几秒吧。
//工程下有个target目录。我们的jar就在里面了。
本地编译成功了。
复制jar到docker file的位置。(用docker部署需要构建镜像,如果直接部署,直接按照原来方式启动即可)
//我的docker file在这个位置
/home/aosp/docker/sobBlog
//我们在项目目录下,执行cp复制。
cp target/sob-blog-1.0.0.jar /home/aosp/docker/sobBlog
构建新镜像
我们复制到位置后,先停止我们的项目。然后再部署。
cd /home/aosp/docker/sobBlog
docker stop sob_blog
docker build -t sob_blog:1.0.8 .
//启动博客系统
docker rm sob_blog
docker run -p 2020:2021 --name=sob_blog --restart=always -d -v /home/aosp/docker/sobBlog/upload:/usr/app/upload sob_blog:1.0.8
在服务器中直接编译且部署成功之后,我们把整个流程的命令写一个脚本。放到项目根目录下。代码拉取完成之后,就执行构建脚本。
#!/bin/bash -ilex
echo "--------blog system build------->"
mvn clean
mvn install
mvn clean install spring-boot:repackage -U
echo "复制到构建镜像目录"
cp target/sob-blog-1.0.0.jar /home/aosp/docker/sobBlog
cd /home/aosp/docker/sobBlog
docker stop sob_blog
#目前就暂定写死
docker build -t sob_blog:1.0.8 .
docker rm sob_blog
echo "启动jar"
docker run -p 2020:2021 --name=sob_blog --restart=always -d -v /home/aosp/docker/sobBlog/upload:/usr/app/upload sob_blog:1.0.8
文件名字:blog_build.sh
位置:工程根目录
可以先在主机直接执行sh,看看整个流程是否正常。
配置Jenkins构建脚本
填写我们的脚本到shell区域
echo $PATH
echo "执行项目根目录脚本blog_build.sh"
whoami
pwd
sh blog_build.sh
blog_build.sh,是放在项目根目录的
保存任务之后,把脚本提交到项目,然后push到master或者你指定的分支,触发构建
任务日志
测试自动发布情况
我们修改了项目的一个测试接口,返回特定的数据。以表示新的构建发布成功。
提交代码,等待job完成。查看Jenkins输出日志。
日志成功了。我们来访问刚刚修改的接口。
接口返回的数据也属于我们预期。整个自动部署流程就完成了。
成功。
观察了内存和cpu的使用情况
Jenkins打包项目和构建镜像的时候需要的内存 未构建任务
够任务后3.1gb
主要是编译项目和构建docker镜像过程占用cpu和内存
cpu:80%+
内存使用增加了500mb这样
编译阶段内存3gb了。未编译的时候2.6gb。
所以,如果整个博客系统运行起来了,2gb服务器是不够用的。必须4gb起步。
博客系统后端自动部署就完成了。
最后的最后
- 本流程是比较简单的使用Jenkins部署后端Java项目。比如要做蓝绿发布分流处理的,可以配合nginx来玩。 也就是脚本想怎么写就怎么写。
- 也可以使用流水线的方式来写,但是我现在还没熟悉(后面有鸡会再做吧)
- 如对你有帮助,点个赞?关注一下?土豪可以打赏我一个甜筒。