传统jar包部署,Jenkins流水线实现

服务部署随笔

这段时间折腾服务的部署,踩了不少坑,也慢慢摸清了整个流程和环境,记录下来方便后续回顾,同时整理关键命令和避坑点,避免后续遗忘。

一、环境认知(核心前提)

  1. 运行环境:服务运行在 Kubernetes 容器环境中,Pod 基于 openjdk17 基础镜像。

  2. 部署方式:容器化部署,通过更新 Deployment 实现服务重启与代码生效。

  3. 误区提醒:初期误以为是传统 BusyBox 服务器,尝试使用 kill + nohup 方式重启,导致服务未真正更新。正确做法是使用 kubectl 命令操作 Deployment

二、自动化部署流程(Jenkins实现)

全程自动化,无需手动干预,流程及核心命令如下:

  1. 代码检出:从代码仓库拉取最新代码

核心命令:git branch: 'main', credentialsId: '你的Git凭据ID', url: '你的Git仓库地址'

  1. 编译打包:在指定Java环境中生成可运行jar包

核心命令:mvn clean package -U -Dmaven.test.skip=true(指定maven配置文件可加-s 配置文件路径)

  1. 构建并推送镜像:将jar包构建成Docker镜像并推送到镜像仓库

核心命令:docker build -t 你的镜像仓库地址/镜像名:标签 . && docker push 你的镜像仓库地址/镜像名:标签

  1. 重启服务:触发Kubernetes Deployment滚动重启,拉取新镜像

核心命令:kubectl rollout restart deployment/你的deployment名称 -n 你的命名空间

三、手动排查关键命令(应急使用)

  1. 查看Pod状态:kubectl get pods -n 你的命名空间 | grep 你的应用名

  2. 查看Pod日志:kubectl logs -f -n 你的命名空间

  3. 查看Deployment重启状态:kubectl rollout status deployment/你的deployment名称 -n 你的命名空间

  4. 手动重启(若需要):kubectl rollout restart deployment/你的deployment名称 -n 你的命名空间

四、避坑总结(重点记录)

  1. 环境判断:部署前先确认服务是传统部署还是K8s部署,避免用错命令(如错误使用kill或ssh上传jar)。

  2. 镜像更新策略:单纯重启不会拉取新镜像,需确保镜像tag变化(如使用latest并设置imagePullPolicy: Always),或在重启前推送了新镜像。

  3. 凭据安全:kubeconfig等敏感信息需通过Jenkins凭据(kubeconfigFile)获取,禁止明文写入脚本。

  4. kubectl依赖:Jenkins代理中必须包含kubectl和kubeconfig文件,通过withCredentials安全注入。

五、总结感悟

目前部署流程已调试稳定,提交代码后Jenkins可自动完成全流程操作,大幅节省手动部署时间。此次折腾最大的收获是:部署服务前,先摸清运行环境再动手,比盲目尝试更高效;很多报错看似复杂,本质都是环境适配或命令用法的小问题,耐心排查即可解决。记录这些细节,后续遇到类似场景可少走弯路。

posted @ 2026-04-16 10:24  码生序  阅读(5)  评论(0)    收藏  举报