当你遇到这些情况的时候,发版到白了少年头,代码还是不会更新...

发布时间:2023年12月31日

开源可观测性平台Signoz(三)【服务器主机监控篇】_轻量化监控工具

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


一、问题描述:

之前遇到过几次这种情况:研发将代码提交之后,通过打包部署,发现部署到服务器上的代码不是最新的,还是修改之前的老代码。

版本升级运行流程:

?

二、原因总结:

1、研发的代码其实并未提交成功

2、Jenkins上的某些缓存文件没有清除

test这个服务打包时会在Jenkins服务器上生成一个api缓存目录,里面是一些打包需要引用的模块。

如果这个目录不删除,下次打包的时候就会直接使用这个api包,而不会去仓库拉取最新的引用模块,所以打出来的包就有可能会出问题。

因此在每次打包之前,先清理掉应该清理的缓存文件就好。

3、Jenkins上面的工程名称变更,而打包脚本没有更新

Jenkins上有一个叫“ABC”的项目,有一次同事将Jenkins上面的“ABC”改成了“ABCD”,所以在构建之后,新的jar包会在.jenkins/workspace/ABCD下面。

然而构建脚本并未更新,依然会去.jenkins/workspace/ABC中寻找jar包推送到服务器上build镜像,所以,即使发布100万次,代码还是老代码!

4、jar包命名规则变更,脚本原有命令过滤不到包

有个工程目录打出来的jar包本来是叫test-0.0.1.jar,某一天研发突然变更了命名规则,打好的jar包名字变成了tes-0.0.1.RELEASE.jar 。

但是Jenkins的打包脚本并没有更新,过滤jar包的正则表达式根本找不到最新的包。

实际上在Jenkins的脚本里面,推送jar包到服务器A的这个步骤是执行失败了,build镜像的时候还是用的A服务器上老的jar包,然后部署到服务器上,因此还是老的代码。

要命的是Jenkins在构建的时候找不到jar包居然还没报错!!!

5、Dockerfile有变更,导致打包有问题

例如下面的这个构建,在Jenkins构建的时候日志并没有报异常,但是部署好的镜像却是老的代码。

手动执行命令build镜像,其实发现少了一个文件,导致其实新的镜像并没有build成功,而且harbor仓库里面镜像的更新时间也没有变化。手动build镜像报错如下:

[root@slave-4 test]# /usr/bin/docker build -t registry.seff.com/seff/test:latest /usr/local/src/test
......   #此处省略一万字
Step 7 : ADD crud-heap_trace.txt /etc/
**lstat crud-heap_trace.txt: no such file or directory**

6、Dockerfile丢失

dockerfile文件丢失,镜像未打包成功,但Jenkins最后运行的结果显示Success。只是在中间报了一串错误,提示dockerfile找不到,这样子的错误很容易被忽略掉:

所以,如果遇到这种清理,发版到白了少年头,代码还是不会更新的。。。

文章来源:https://blog.csdn.net/WF_crystal/article/details/135294397
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。