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插件未更新到最新代码相关推荐

  1. 简析Jenkins的SVN插件未更新到最新代码

    摘要 简析Jenkins的SVN插件未更新到最新代码 在使用Jenkins做持续集成时,遇到Jenkins的SVN插件没有更新到最新的代码的情况. 例如,在代码提交之后就立即使用Jenkins更新代码 ...

  2. jenkins 中 svn 插件配置

    jenkins svn 插件配置页面: 上面有一个Local module directory(optional) 数值:"." 使得jenkins调用svn 拉取代码之后的路径: ...

  3. Jenkins安装svn插件并创建项目

    系统管理-插件管理-搜索Subversion-安装重启即可 安装完成后就会在这个位置生成svn的选项:  Jenkins+svn代码上线系统原理: 1.Jenkins拉取svn服务器代码并打包到Jen ...

  4. 解决jenkins打包时不能同步最新代码问题

    在使用Jenkins做持续集成时,遇到Jenkins的SVN插件没有更新到最新的代码的情况. 例如,在代码提交之后就立即使用Jenkins更新代码,结果刚提交的代码没有被更新到,更新到的代码是旧版本的 ...

  5. 1❤️Jenkins从零到壹❤️ :安装svn插件和maven插件(JAVA 小虚竹)

    技术活,该赏 点赞,收藏再看,养成习惯 Jenkins使用教程相关系列 目录 文章目录 Jenkins安装svn插件 1.选择 Manage Jekins -> 点击 Manage Plugin ...

  6. 解决jenkins打包时不能及时更新到最新代码的问题

    2019独角兽企业重金招聘Python工程师标准>>> 首先要定位是否真的拉不到最新代码? 定位步骤如下: 1.在SVN上,查看show log,没有记录 2.登录Jenkins,查 ...

  7. github上fork原项目,如何将本地仓库代码更新到最新版本?

    https://www.cnblogs.com/eyunhua/p/8463200.html 场景: 在github上fork原项目,项目组成员发起pull request提交了代码,这时自己在本地仓 ...

  8. Eclipse安装最新SVN插件方法

    PS:文章转自http://liujianqiao398.blog.163.com/blog/static/181827257201331194610634/,所有权力归原作者所有. 1.下载最新的E ...

  9. 最新eclipse 安装最新SVN插件

    原文地址为: 最新eclipse 安装最新SVN插件 在eclipse中点击help -> Install New Software 在 Install窗口中点击 Add按钮 然后填写name和 ...

  10. Eclipse添加SVN插件:导入项目+上传项目+更新项目

    首先在Eclipse中安装SVN插件,方法同安装Pydev相同 首先点击help,然后点击Install New Software 然后在弹出的窗口中点击Add,再在新弹出的窗口中的url栏输入如下内 ...

最新文章

  1. Swift与LLVM-Clang原理与示例
  2. 开通会员配送费反而更高了?美团外卖发致歉声明!
  3. python装饰器改变命运
  4. 微信小程序左到右联动
  5. 卸载 nvidia 显卡驱动
  6. Junit单元测试遇到的initializationerror:method initializationerror not found
  7. 谷歌为何要大力投资生命科学初创公司?
  8. java foreach标签,jstl c:foreach标签
  9. 记使用WaitGroup时的一个错误
  10. 非UI线程下页面处理:view的postInvalidate和post对消息处理的差异化
  11. Spark安装配置指南
  12. .Net思想篇:为何我们需要思想大洗礼?
  13. 一步一步写算法(之寻路)
  14. Hibernate不能自动建表解决办法【转载】
  15. 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
  16. 为什么你买不到一台好用的机器人?因为没有你的代码
  17. Stable Diffusion半秒出图;VLIW的前世今生;YOLOv5全面解析教程 | AI系统前沿动态
  18. 7-5 有理数比较 (10 分)
  19. android导航栏字体,Android状态栏/导航栏颜色
  20. 贴吧防删图应该怎么学?【万能的小胡】

热门文章

  1. 20220103_数据库过程:异常业务量情况通报
  2. tiledmap 图块属性_TiledMap地图使用
  3. music 算法 c语言,频率估计方法——MUSIC和ROOT-MUSIC算法(附代码)
  4. 【GPS模组】移远EC20 基于Arduino的GPS流速仪
  5. 分水岭算法 matlab实现
  6. Java 全栈知识体系( PDF 可下载)
  7. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例38
  8. SAE SENT单边半字节传输协议里的CRC4与CRC6检验码编程
  9. smb协议讲解_SMB/CIFS协议解析
  10. ssh连接服务器协议错误,Xmanager发生SSH协议错误怎么办