这里记录如何通过 jenkins 打包发布 springboot 后台应用至 K8s 集群和 jenkins 打包发布 vue 前端应用至 K8s 集群,个人编写只供参考!
# 1.jenkins打包发布springboot后台应用至K8s集群
- 整体思路:
- Jenkins 通过SVN拉取远端源码
- springboot后台应用打包zip
- 把应用后台包解压,并通过Dockerfile打成Docker镜像
- 将镜像上传到Docker私有仓库harbor ,这里我将新的tag设置为构建时的编号
- 删除老的Docker镜像,运行新的Docker镜像 —— shell脚本
- k8s集群apply更改后的yml文件,直接拉取harbor仓库新镜像完成更新
# 2.jenkins打包发布vue前端应用至K8s集群
- 整体思路
目前k8s集群中前端考虑更新频率高,所以未使用打入完整html的nginx镜像
选择将html挂载在外部NFS文件系统中,所以这里只需更新html/下的文件即可
# 3.jenkins配置注意事项
- Maven Node SSH环境需要提前配置好
- Maven配置路径:Manage Jenkins ---> Global Tool Configuration
- SSH配置路径: Manage Jenkins ---> 配置
- 环境变量配置
- 一些必要的插件
Maven Integration,Publish Over SSH,Subversion...
# 4.前端打包发布步骤
- 从SVN获取最新代码
- 执行vue打包命令,生成dist包
- 将打好的包推送到ssh远程服务器并执行更新脚本
# 5.后台打包发布步骤
- spring项目构建pom.xml文件打包
- 将打好的包推送到ssh远程服务器并执行命令
# 6.使用到的脚本参考
- 前端
#!/bin/bash
function zip_web() {
pushd /home/summer/nginx/html/ >/dev/null 2>&1
zip -q -r web.$(date %Y%m%d%H%M).zip web/
if [ $? -eq 0 ]; then
echo "web备份完成!"
rm -rf web
else
echo "web备份失败!"
exit 0
fi
popd >/dev/null 2>&1
}
zip_web
function update_web() {
pushd /home/summer/nginx/temp/webtar >/dev/null 2>&1
unzip -o dist.zip -d /home/summer/nginx/html/ &>/dev/null
mv /home/summer/nginx/html/dist /home/summer/nginx/html/web
chown -R summer:summer /home/summer/nginx/html/web
popd >/dev/null 2>&1
}
update_web
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
- 后台
#!/bin/bash
## 进入zip包目录
cd /home/summer/Docker/Docker
## 解压到构建docker镜像目录
unzip -o package.zip -d ../build/
## 选择Dockerfile文件
cp ../Dockerfile ../build/
## 执行打包镜像脚本
## ./../build.sh
docker rmi background:latest
## docker rmi 192.168.0.52:8084/summer/background:v1
cd /home/summer/Docker/build
echo "$(date "%Y-%m-%d %H:%M:%S")===开始构建==="
docker build -t background:latest .
docker tag background:latest 192.168.0.52:8084/summer/background:${BUILD_NUMBER}
docker push 192.168.0.52:8084/summer/background:${BUILD_NUMBER}
echo "$(date "%Y-%m-%d %H:%M:%S")===push成功==="
- 个人编写只供参考,
待更新