Jenkins问题:SVN插件未更新到最新代码
Jenkins使用教程相关系列 目录
目录
分析原因
解决方案
分析原因
简析Jenkins的SVN插件未更新到最新代码
在使用Jenkins做持续集成时,遇到Jenkins的SVN插件没有更新到最新的代码的情况。
例如,在代码提交之后就立即使用Jenkins更新代码,结果刚提交的代码没有被更新到,更新到的代码是旧版本的。
查阅网上相关内容,有一种说法为:
Jenkins服务器时间与SVN服务器时间不一致,Jenkins的SVN插件是使用时间标签下载,而不是取HEAD,
因此如果svn服务器的提交代码时间比Jenkins的当前时间晚,该代码就不会被更新。
所解决问题的方法是:
只要将Jenkins服务器时间与SVN服务器时间设置成一样的就可以。
没错,上面是解决了问题,但Jenkins的SVN插件是与时间戳相关的SVN revision吗?
查看某个Jenkins Job的构建日志,在使用SVN插件更新代码时,日志如下:
Updating svn://repository_path at revision '2015-08-06T08:48:12.490 +0800'
从上面可以看出来,该次构建相应的revision确实是构建时间戳。
那么,可以让Jenkins的SVN插件更新代码时,设置revision为HEAD吗?
答案是可以的,在SVN URL加@HEAD后缀即可,Jenkins的SVN插件是支持这个的。
在SVN URL加@HEAD后缀后,构建Jenkins Job后日志输出如下:
Updating svn://repository_path@HEAD at revision HEAD
而且这样确保更新的代码是最新的,不会因为Jenkins服务器与SVN服务器之间的时间差受到影响。
注:HEAD是SVN revision关键字,表示版本库中的最新版本。
通过svn help查看svn checkout/update的帮助文档,关于revision选项,截图如下:
由上可见,revision选项有:NUMBER(revision number),'{' DATE'}'(时间戳)以及revison关键字(HEAD、BASSE、COMMITTED、PREV)。
通过查看Jenkins SVN插件的源码:
WorkspaceUpdater.java部分源码截图如下:
从注释中可以看出获取SVN revision的策略:
// for the SVN revision, we will use the first off:
// - a @NNN suffix of the SVN url
// - a value found in a RevisionParameterAction
// - the revision corresponding to the build timestamp
可见,对于SVN revision,按如下优先级获取:
- SVN url的@NNN后缀(@NNN是svn revision)
- RevisionParameterAction中的值,RevisionParameterAction主要用于参数化构建,保持两个build之间revision的一致性
- 构建时间戳相对应的revision
之前,该注释有点小错误,提交了个Pull Request修复了下:
https://github.com/jenkinsci/subversion-plugin/pull/130
参考:
http://blog.chinaunix.net/uid-26598889-id-3402223.html
http://www.tuicool.com/articles/B326v27
https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin
https://github.com/jenkinsci/subversion-plugin
解决方案
综上所述,解决方案有两种:
一、只要将Jenkins服务器时间与SVN服务器时间设置成一样的就可以。
二、jenkins构建时,在SVN路径上,增加@HEAD 强制获取最新代码版本
Repository URL
http://localhost:9527/svn/trunk/zhw@HEAD
Jenkins问题:SVN插件未更新到最新代码相关推荐
- 简析Jenkins的SVN插件未更新到最新代码
摘要 简析Jenkins的SVN插件未更新到最新代码 在使用Jenkins做持续集成时,遇到Jenkins的SVN插件没有更新到最新的代码的情况. 例如,在代码提交之后就立即使用Jenkins更新代码 ...
- jenkins 中 svn 插件配置
jenkins svn 插件配置页面: 上面有一个Local module directory(optional) 数值:"." 使得jenkins调用svn 拉取代码之后的路径: ...
- Jenkins安装svn插件并创建项目
系统管理-插件管理-搜索Subversion-安装重启即可 安装完成后就会在这个位置生成svn的选项: Jenkins+svn代码上线系统原理: 1.Jenkins拉取svn服务器代码并打包到Jen ...
- 解决jenkins打包时不能同步最新代码问题
在使用Jenkins做持续集成时,遇到Jenkins的SVN插件没有更新到最新的代码的情况. 例如,在代码提交之后就立即使用Jenkins更新代码,结果刚提交的代码没有被更新到,更新到的代码是旧版本的 ...
- 1❤️Jenkins从零到壹❤️ :安装svn插件和maven插件(JAVA 小虚竹)
技术活,该赏 点赞,收藏再看,养成习惯 Jenkins使用教程相关系列 目录 文章目录 Jenkins安装svn插件 1.选择 Manage Jekins -> 点击 Manage Plugin ...
- 解决jenkins打包时不能及时更新到最新代码的问题
2019独角兽企业重金招聘Python工程师标准>>> 首先要定位是否真的拉不到最新代码? 定位步骤如下: 1.在SVN上,查看show log,没有记录 2.登录Jenkins,查 ...
- github上fork原项目,如何将本地仓库代码更新到最新版本?
https://www.cnblogs.com/eyunhua/p/8463200.html 场景: 在github上fork原项目,项目组成员发起pull request提交了代码,这时自己在本地仓 ...
- Eclipse安装最新SVN插件方法
PS:文章转自http://liujianqiao398.blog.163.com/blog/static/181827257201331194610634/,所有权力归原作者所有. 1.下载最新的E ...
- 最新eclipse 安装最新SVN插件
原文地址为: 最新eclipse 安装最新SVN插件 在eclipse中点击help -> Install New Software 在 Install窗口中点击 Add按钮 然后填写name和 ...
- Eclipse添加SVN插件:导入项目+上传项目+更新项目
首先在Eclipse中安装SVN插件,方法同安装Pydev相同 首先点击help,然后点击Install New Software 然后在弹出的窗口中点击Add,再在新弹出的窗口中的url栏输入如下内 ...
最新文章
- Swift与LLVM-Clang原理与示例
- 开通会员配送费反而更高了?美团外卖发致歉声明!
- python装饰器改变命运
- 微信小程序左到右联动
- 卸载 nvidia 显卡驱动
- Junit单元测试遇到的initializationerror:method initializationerror not found
- 谷歌为何要大力投资生命科学初创公司?
- java foreach标签,jstl c:foreach标签
- 记使用WaitGroup时的一个错误
- 非UI线程下页面处理:view的postInvalidate和post对消息处理的差异化
- Spark安装配置指南
- .Net思想篇:为何我们需要思想大洗礼?
- 一步一步写算法(之寻路)
- Hibernate不能自动建表解决办法【转载】
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
- 为什么你买不到一台好用的机器人?因为没有你的代码
- Stable Diffusion半秒出图;VLIW的前世今生;YOLOv5全面解析教程 | AI系统前沿动态
- 7-5 有理数比较 (10 分)
- android导航栏字体,Android状态栏/导航栏颜色
- 贴吧防删图应该怎么学?【万能的小胡】
热门文章
- 20220103_数据库过程:异常业务量情况通报
- tiledmap 图块属性_TiledMap地图使用
- music 算法 c语言,频率估计方法——MUSIC和ROOT-MUSIC算法(附代码)
- 【GPS模组】移远EC20 基于Arduino的GPS流速仪
- 分水岭算法 matlab实现
- Java 全栈知识体系( PDF 可下载)
- 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例38
- SAE SENT单边半字节传输协议里的CRC4与CRC6检验码编程
- smb协议讲解_SMB/CIFS协议解析
- ssh连接服务器协议错误,Xmanager发生SSH协议错误怎么办