简析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

时间: 2024-10-07 19:56:01

简析Jenkins的SVN插件未更新到最新代码的相关文章

Jenkins 的svn插件下载的代码不是最新代码的问题

项目组使用Jenkins做自动化的每日编译和单元测试.经常发现,当提交完代码后,在Jenkins的每日编译代码还是旧代码,刚提交的代码并没有check out出来. 后来发现Jenkins服务器的时间要比svn服务器的早,把Jenkins时间和svn服务器时间设置为相同就OK. 后来在网上搜索了一下,Jenkins的svn插件是使用时间标签下载,而不是取HEAD,因此如果svn服务器的提交代码时间比Jenkins的当前时间晚,该代码就不会被更新.

svn自动更新服务器最新代码

1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin    --svn安装目录(作者使用时TortoiseSVN客户端,其他客户端未测试过)start TortoiseProc.exe /command:update /path:"F:\_xxx_svn\branches\xxxxx" /closeonend:3 update是命令,/path后面是同步路径start TortoiseProc.exe /co

JENKINS 打包 jar未更新版本

使用jenkins+maven+svn构建持续集成 maven快照库中程序已经更新.但是jenkins打包未更新jar至最新. 原因是:jenkins调用的maven的配置文件 maven默认情况下:更新本地仓库机制:每日更新一次.如需要更改实时检查.需要修改maven配置: settings中增加: <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> &l

利用jenkins打造通过自定义参数更新svn 指定文件任务

jenkin可以执行很多构建任务,有时候我们需要在执行构成中同构shell对服务器进行操作而且还需要进行参数的传入 比如:我要利用svn进行本地代码的更新,单又不是所有代码的更新,只更新指定的1个或这个文件,怎么实现呢. jenkins有很多插件,其中插件Extended Choice Parameter Plug-In就可以定义参数,没有安装的可以去插件管理进行搜索安装,,结合jenkin参数化构建任务就可以在构建任务的时候让使用者输入参数,我这的的参数就是文件路径.先看一下效果. 点击任务构

ONOS预热篇之架构简析(二)

ONOS是首款专门面向服务提供商和企业骨干网的开源SDN网络操作系统,是由一家名为开放网络实验室(ON.Lab)的非盈利性组织打造的一款商用控制器,并将于美国时间2014年12月5日全球首发.ONOS旨在为服务提供商和企业骨干网提供高可用性(HA).可横向扩展及高性能的网络需求.由于该项目得到了业界各知名大佬包括服务提供商AT&T.NTT,网络供应商Ciena.Ericsson.Fujitsu.Huawei.Intel.NEC,网络运营商Internet2.CNIT.CREATE-NET的资助和

Eclipse安装SVN插件(转载)

http://www.cnblogs.com/ruiati/p/3584120.html 1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版    如果没有安装的请到这里下载安装:http://eclipse.org/downloads/ 2.下载SVN插件subclipse,安装方法有两种.那种绿色的以link方式安装的方式我在indogo上试了多次就是没成功. 3.SVN插件下载地址及更新地址,你根据需要

Nutch学习笔记——抓取过程简析

Nutch学习笔记二--抓取过程简析 学习环境: ubuntu 概要: Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 通过nutch,诞生了hadoop.tika.gora. 先安装SVN和Ant环境.(通过编译源码方式来使用nutch) apt-get install ant apt-get install subversion [email protected]:~/data/nutch$ svn co https:

MyEclipse6.5安装SVN插件的三种方法z

一.安装方法: 方法一.如果可以上网可在线安装   1. 打开Myeclipse,在菜单栏中选择Help→Software Updates→Find and Install;   2. 选择Search for new features to install,点击Next进入下一步;   3. 点击"New Remote Site"按钮,在弹出的对话框中输入:   name:SVN   url:http://subclipse.tigris.org/update_1.4.x   点击O

VS2013安装SVN插件

前言:之前一直搞Java,没办法,白手搭建VS的开发环境就只能我来做了.不过在百度里找了半天,也没有人提供好的方法,听说专门有VS的SVN插件,于是就动手了. 材料 VS 2013安装程序. VisualSVN安装程序. 前期准备 自然先要装SVN的server版,大家可见svn安装部署以及服务器转移,是我之前写的. 然后需要安装TortoiseSVN,这个大家在网上应该见到很多,就不多说了,这是我将服务端代码下载到本地的列表. 开始 安装完VisualSVN后,再安装VS2013,完了之后在V