k8s+jenkins自动部署前后台

2022-09-16 12:27:23 浏览数 (1)

这里记录如何通过 jenkins 打包发布 springboot 后台应用至 K8s 集群和 jenkins 打包发布 vue 前端应用至 K8s 集群,个人编写只供参考!

# 1.jenkins打包发布springboot后台应用至K8s集群

  • 整体思路:
  1. Jenkins 通过SVN拉取远端源码
  2. springboot后台应用打包zip
  3. 把应用后台包解压,并通过Dockerfile打成Docker镜像
  4. 将镜像上传到Docker私有仓库harbor ,这里我将新的tag设置为构建时的编号
  5. 删除老的Docker镜像,运行新的Docker镜像 —— shell脚本
  6. k8s集群apply更改后的yml文件,直接拉取harbor仓库新镜像完成更新

# 2.jenkins打包发布vue前端应用至K8s集群

  • 整体思路

目前k8s集群中前端考虑更新频率高,所以未使用打入完整html的nginx镜像

选择将html挂载在外部NFS文件系统中,所以这里只需更新html/下的文件即可

# 3.jenkins配置注意事项

  1. Maven Node SSH环境需要提前配置好
  • Maven配置路径:Manage Jenkins ---> Global Tool Configuration
  • SSH配置路径: Manage Jenkins ---> 配置
  • 环境变量配置
  • 一些必要的插件

Maven Integration,Publish Over SSH,Subversion...

# 4.前端打包发布步骤

  1. 从SVN获取最新代码
  1. 执行vue打包命令,生成dist包
  1. 将打好的包推送到ssh远程服务器并执行更新脚本

# 5.后台打包发布步骤

  1. spring项目构建pom.xml文件打包
  1. 将打好的包推送到ssh远程服务器并执行命令

# 6.使用到的脚本参考

  • 前端
代码语言:javascript复制
#!/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

  • 后台
代码语言:javascript复制
#!/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成功===" 

  • 个人编写只供参考,

待更新

0 人点赞