Jenkins中SVN Checkout步骤缺失提交信息问题求助
问题描述
多款采用SVN版本控制的项目,原有Pipeline运行正常,近期Checkout步骤无法显示提交信息,但代码拉取、提交等其他操作均正常。已设置changelog: true,Checkout步骤代码如下:
scmVars = checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', changelog: true, filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'foo', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: scm.locations[0].remote.substring(0, scm.locations[0].remote.indexOf("@"))]], quietOperation: true, workspaceUpdater: [$class: 'UpdateWithCleanUpdater']])
控制台无报错,Pipeline正常完成,仅缺失提交信息。问题出现时未做任何变更,后续已尝试升级Jenkins及相关插件。
排查与解决步骤
检查SVN远程地址截取逻辑
代码中通过substring和indexOf("@")处理远程地址,若原地址格式变化(比如无@符号、@位置偏移),会导致实际拉取路径不符,Jenkins无法匹配变更记录。可在Pipeline中添加打印语句,输出scm.locations[0].remote和截取后的地址,确认是否正确指向目标仓库。关闭
quietOperation参数
当前quietOperation: true会抑制SVN输出,可能导致Jenkins无法捕获变更日志相关数据。将其改为false后重新运行Pipeline,观察提交信息是否恢复。排查Workspace缓存问题
临时将workspaceUpdater切换为[$class: 'CleanCheckoutUpdater'],完全清理Workspace后重新拉取代码,排除旧缓存导致的变更日志无法识别问题。检查Jenkins系统日志与插件兼容性
进入Manage Jenkins → System Log,搜索是否存在SVN变更日志相关的隐性错误;若升级插件后问题仍存在,可尝试回退到之前版本的SVN插件,验证是否为新版本兼容性问题。验证SVN服务器端可用性
在本地使用SVN命令行拉取对应路径,执行svn log查看是否能正常获取提交信息。若命令行也无法获取,需排查SVN服务器端的日志记录配置;若命令行正常,则问题集中在Jenkins插件配置层面。
内容的提问来源于stack exchange,提问作者CodingPandaBear

