自动构建引发的血案排查

找不到资源问题排查过程

问题描述

开发环境下,自动部署引发血案,通过网关调用服务接口出现错误找不到资源

问题根源

启动jar和每次构建的jar不是同一个

  1. 部署环境,基于docker,jenkins,git,maven等组件自动构建;
  2. 开发人员提交代码,系统自动构建启动;
  3. 开发人员多次修改pom文件的 <artifactId yw-routing /artifactId>
  4. jenkins自动捕捉git的push事件,导出生成多个jar,如:yw-routing.jar; yw-rout.jar;
  5. docker生成镜像,将多个版本的jar打入镜像中;
  6. docker 启动执行的脚本中需要入参指定启动的jar包名称, nohup jar -jar $1(jar变量);
  7. 此时传入的jar包名称并非最新的jar包名称,导致最新代码无法部署到开发环境;

解决方案

  1. 生成新的镜像时,每次只保留最新jar;此方案能只能保证服务启动时出现异常,找不到指定jar包;
  2. 写死的启动参数变成动态参数,每次获取最新的jar包名称当做变量传入启动脚本中,此方案能从根本上解耦开发和运维的职能;

问题分析过程

  1. 确保代码已提交到指定分支,检查git库中的对应接口代码是否存在;
  2. 确保网关可以路由到指定服务检查网关服务是否正常;
  3. 确保本地调试通过,测试本地通过网关请求相同接口;
  4. 确保指定服务下的接口能够掉通,缩小问题范围,测试开发环境同一个服务下的其他接口;
  5. 以上均正常则基本可以确定是部署出现问题,即最新代码并未成功部署;
  6. 进入docker内部查看jar包反编译看是否存在最新代码,结果发现多个jar包;
  7. 确保启动jar为最新jar,分析发现启动jar一直未历史版本,至此问题定位成功;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值