1.前提
公司SVN账号密码和AD账号密码是绑定在一起的,为了保证代码检出总是最新,jenkins中做代码检查前总会从SVN中检出最新代码。
最近公司要求AD账户不得使用原始密码,更改密码后,jenkins在检出代码的时候出现了一个坑爹的问题:控制台打印的问题是subversion update has been canceled。
2.分析原因
subversion update has been canceled——SVN代码无法正常更新,这很明显是SVN密码更改后的副作用。
3.所做的努力
3.1 修改jenkins本身的配置
修改完jenkins中一切和SVN有关的账号密码信息并重启jenkins服务后,检出代码仍旧报错:subversion update has been canceled。
上述努力失败后,一度不敢再相信人生。谷歌了十几分钟,由于公司网速太不给力(可以吐槽一下么?),也没得到一个有参考价值的答案。
平复了下心情,打算从头开始分析。只是很纠结:jenkins该修改的配置都修改了,而且确保没有遗漏,为什么就没有生效呢?
3.2 重新分析
拿出一个代码检查作业仔细分析,大脑中显现出jenkins后台做的一切工作,看到SVN检出的策略:Use ‘svn update‘ as much as possible(平时一直没有太注意这个所谓的策略,因为默认就是它),虎躯一震,有了!
这应该就是jenkins检出的时候利用了slave SVN本身的检出功能,那我就应该去修改子节点中SVN保存的用户密码等相关数据。
3.3 再次出发
打开slave SVN客户端,setting → Saved Data → 选择「Authentication data」,点击【Clear】 → 确定。
进入SVN Resp-browser,就会弹出一个框,让重新输入账户密码,输入后勾选上保存。
再次构建jenkins中的作业,果然好了!
由于公司电脑只能在内网使用,无法截图,就不再上图了。
4.体会
① 遇到问题应该先自己分析可能的原因,而不是直接谷歌。要对自己有信心,相信自己独立解决问题的能力。
② 再次体会到jenkins m/s架构的优势——master只负责调度管理,slave负责具体执行。这也为jenkins出现的问题提供了两个大维度的思考面:master层面和slave层面。