业务方反馈,Jenkins 上某个 job 没有将 release 版本的组件发布到 maven 私服,以致依赖方无法引用依赖。
了解这个问题的更多信息:
该 job 构建状态为 success,它使用 maven-release-plugin 时,没有将 release 版本的组件发布到 maven 私服,而是将 SNAPSHOT 版本的包发布到 maven 私服,同时 git 仓库的 pom.xml 版本也没升级,但是倒是打了 tag。
为什么会出现这个问题呢?
回顾最近 对 Jenkins 做的修改,共有两项
曾修改了 maven 工具的位置,难道是这个影响了?
也曾修改了 Jenkins 的 JVM 参数,然后重启了 Jenkins,难道是这个影响了?
理论上,修改 maven 工具的位置和修改 Jenkins 的 JVM 参数,和这个没关系的
恢复 maven 工具的位置,问题没有解决
恢复 Jenkins 的 JVM 参数,然后重启了 Jenkins,问题依旧
那那到底是什么原因呢?经过一段时间定位,这个奇怪的问题并没有得到解决,一时找不到答案
而同事在 Jenkins 备机构建该 job,表现正常,于是紧急切换备机,先让业务正常运行,然后继续定位问题
定位问题的过程并非一帆风顺,不断推测验证,有的时候会焦急不安,也难免陷入思维误区~~
所幸有备无患,可以静下心来深入分析问题~~
仔细查看 Jenkins 构建日志,对比正常的和有问题的日志:
正常的日志如下:
有问题的日志如下:
发现正常的在执行 mvn release:prepare 命令时少了某些步骤,如 git commit、git push。
同时,这步有问题也导致执行 mvn release:perform 时出现了问题,将SNAPSHOT 版本的包发布到 maven 私服。
查看 maven-release-plugin 官方文档,查看 prepare 步骤具体做的事情:
通过 bing 搜索 “mvn release prepare not Commit the modified POMs”,在 stackoverflow 找到一个相关问答:
https://stackoverflow.com/questions/15166781/mvn-releaseprepare-not-committing-changes-to-pom-xml
投票最高的答案截图如下:
在上面的答案中,通过在 pom.xml 中通过 dependency 指定了 maven-scm-provider-gitexe 的版本为 1.8.1
难道是 maven-release-plugin 和 git 版本兼容性有关系?
对比服务器的 git 版本:
一个是 git-1.8.13,一个是 git- 2.1.0
备份机器是 git-1.8.13,这个环境环境下表现正常
将原 Jenkins 服务器 git 版本降到 1.8.13,终于终于,表现正常了~~~
但是这次出现的问题实在是很诡异,根源依旧未知,服务器上以前怎么就没问题呢?
后来发现服务器上有两个版本的 git,一个是 git-1.8.4.2,一个是 git-2.1.0
这应该是当时启动 Jenkins 的时候,当时环境下 git 的版本是 1.8.4.2
并且Jenkins 服务自从2014年运行以来从来没有重启过,所以这个问题一直没有出现
而在重启 Jenkins 的时候,git 是 2.1.0(这个环境变量是在 /etc/profile 中配置的),从而引发了这个问题,踩到了这个深埋多年的坑~~
问题得到解答,顿时一块石头落地,心情放松~~
Original url: Access
Created at: 2020-07-23 14:15:33
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论