如何让hudson的两个job共用一个svn工作目录
作者:朱金灿
来源:http://blog.csdn.net/clever101
现在我的需求是这样的:一个软件需要编译完全版本和基础版本,完全版本的基础功能较多,基础版本只包含了基础功能。有时只需要迅速给用户提供基础版本,这时加入使用hudson来编译完全版本是浪费时间,也不符合快速响应用户需求的目的。最好的办法是在hudson建两个job,一个job负责编译基础版本,另一个job负责编译完全版本,但是我也不想把同一份代码下载到不同的目录。
今天查了一下hudson的svn更新选项,发现直接使用两个job共用一个svn源码目录是有问题的。因为hudson的svn更新选项有下面这些:
Use‘svn update’ as much as possible
第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
以后更新的时候,不会判断已有文件是否在svn里存在。比如工作目录下的文件123在svn里不存在,那么更新的时候不会删除123。
不会判断工作目录下的文件是否被改动,只会判断svn是否有新版本需要更新。比如工作目录下的文件zzz.txt内容为zzz,svn上的zzz.txt内容为空,如果svn上zzz.txt没有新版本,则在更新的时候不会更新zzz.txt,也就是说如果手动修改了工作目录下的文件,如果此文件在svn上没有出现新版本,就不会更新。一旦svn上的zzz.txt有新版本后就会更新工作目录的zzz.txt,这时工作目录下会生成如下几个文件:zzz.txt、zzz.txt.mine、zzz.txt.r223、zzz.txt.r224,其中zzz.txt.r223为svn上老版本、zzz.txt.r224为svn上新版本、zzz.txt.mine为工作目录上的zzz.txt的副本、zzz.txt记录了文件变化。
svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。但是如上例中的zzz.txt手动修改过,已经和svn上的不一样了,这时将不会被删除。
Alwayscheck out a fresh copy
第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
每一次更新的时候,都会先清除工作目录下的所有文件,然后重新check-out一份完整的项目到工作目录下。
Emulateclean checkout by first deleting unversioned/ignored files,then ‘svn update’
第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
以后更新的时候会判断工作目录下的文件是否在svn里存在,如果不存在则删除,如果存在且有新版本则更新。
会判断工作目录下的文件是否被改动,不管有没有新版本,都会还原为svn上的最新版本。
svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。
Use‘svn update’ as much as possible,with ‘svn revert’ before update
第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
以后更新的时候不会判断工作目录下的文件是否在svn里存在。
会判断工作目录下的文件是否被改动,不管有没有新版本,都会还原为svn上的最新版本。
svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。
就是说无论你选择哪个svn更新选项,在第一次运行第二个job时,都会把第一个job的工作目录下的文件删除掉的。如何避免这种情况,今天试验了一种做法,就是欺骗hudson,在第一次运行第二个job时,设置源代码下载到一个新的目录(不同于第一个job的工作目录),然后在第二次运行第二个job之前,修改第二个job的工作目录为第一个job的工作目录。
参考文献:
1.jenkins中Check-outStrategy的各选项测试
如何让hudson的两个job共用一个svn工作目录的更多相关文章
- 关于Eclipse如何加入Gradle文件与Android Studio两个平台一起开发,工作目录不发生变化
前言: 本来很久之前想弄这玩意,不过因为各种原因,所以没弄. 今天有位前辈提出需求.说想让Eclipse的Android项目逐步走向Android Studio,但是又担心Android Studio ...
- dede两个后台共用一个数据库会出现的问题
共用数据库内容页图片问题 在include/extend.func.php里面加上 function replaceurl($newurl) { $newurl=str_replace('src=&q ...
- 如何让多个dz论坛共用一个用户数据库
用户数据库在论坛中是可以独立备份的,备份方法:论坛后台——站长——数据库,备份所有ucenter数据表,也就是用户数据.其他DZ论坛搭建完成以后,可以上传用户数据库,将备份文件使用上传至网站所使用的主 ...
- Windows2003系统如何设置能让两个人共用一个桌面同时远程控制?
在windows 2003上,可以两人同时同一桌面控制一台服务器,交流非常方便. 解决方案: 两人都用终端远程登陆到服务器上,其中一人在“开始”--“管理工具”--“终端服务管理器”,选中对方的用户名 ...
- IAR ARM、IAR STM8、IAR MSP430共用一个IDE
转自IAR ARM.IAR STM8.IAR MSP430共用一个IDE 试了安装好多个不同版本不同编译器的IAR,终于明白不同编译器的IAR共用IDE的条件,把几个不同编译器的IAR安装在一起,共用 ...
- 多个请求共用一个Servlet(JavaWEB)
我们在对JavaWEB工程进行开发的时候,我们经常会遇到这样一个问题,在jsp中发送到Servlet的每一个请求都要写一个对应的Servlet,这样会造成一个工程完成下来需要写几十个Servlet,那 ...
- Nacos作为配置中心时,多个服务共用一个dataId的配置
写在前面 本文是对我之前一篇文章<Spring Cloud+nacos+Feign,实现注册中心及配置中心>的补充.此文章中简单写了如何将Nacos作为配置中心.在使用配置中心时,我们会遇 ...
- 多人共用一个Linux用户, 实现Bash配置文件独立
本文中提到的 账户, 用户 均表示同一概念. 例如 ssh wbourne@192.168.xxx.101, 账户, 用户 指的均是 wbourne. 背景 在工作中, 我们经常会连接Linux服务器 ...
- zeromq中两个dealer 通过一个router进行通信
发现有童鞋不是很清楚ZMQ中的“请求-回复”模式中的ROUTER怎么用,所以简单介绍一下“请求-回复”模式的使用(最后付代码). 一.讲一讲 1.要使用zmq 通过一个router进行通信,你首先需要 ...
随机推荐
- Ionic CLI升级到3版本后2版本工程运行出错.md
1. 问题描述: 最近将Ionic的CLI升级到了最新的版本3.2,升级后在原来Ionic2版本的CLI中创建的工程,通过ionic serve运行报错,错误类似如下: C:\Users\Admin\ ...
- vue实现文字上下滚动
实现文字的上下滚动使用positon的relative的top属性,通过动态改变top来实现相关内容的更换,通过transion来实现相关的动画效果, 相关的dom内容 <template> ...
- js数组去重问题
1. 双层循环:外层循环,内层比较值: (1)利用splice直接在原数组进行操作 Array.prototype.delRepeat = function (){ var arr = this; v ...
- md5sum---文件校验和
md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和.一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行. MD5算法常常被用来验证网络文件传输的完 ...
- 使用Opencv2遇到error C2061: 语法错误: 标识符dest
在写代码是遇到了这样一个问题,error C2061: 语法错误: 标识符"dest": 1>d:\opencv\opencv\build\include\opencv2\f ...
- Option可选值(一)
//: Playground - noun: a place where people can play import Cocoa class Person { var residence: Resi ...
- C#读写共享目录
C#读写共享目录 该试验分下面步骤: 1.在server设置一个共享目录.在这里我的serverip地址是10.80.88.180,共享目录名字是test,test里面有两个文件:good.txt和b ...
- Oracle数据库备份恢复,巡检须要关注的对象设置以及相关恢复概述
数据库备份恢复.巡检须要关注的对象设置: 1.数据库名称,以及DBID: --dbid在v$database中 SYS@ORCL>select dbid,name from v$dat ...
- 在eclipse中公布maven的多模块web项目到tomcat上及单步debug模块jar
1.在eclipse中公布maven的多模块web项目到tomcat eclipse和maven及tomcat的部署略去,还有maven的基础知识和使用在此处略去. 依照例如以下的步骤操作: 将lib ...
- JAVA并发-内置锁和ThreadLocal
上一篇博客讲过,当多个线程访问共享的可变变量的时候,可以使用锁来进行线程同步.那么如果线程安全性存在的3个前提条件不同时存在的话,自然就不需要考虑线程安全性了.或者说如果我们能够将某个共享变量变为局部 ...