阅读更多

10顶
1踩

研发管理

原创新闻 持续集成和构建管理工具QuickBuild 3.1发布

2010-11-15 08:21 by 见习记者 yjshen 评论(9) 有5821人浏览
这个版本加入了对分布式源代码管理系统的支持。在Git, Mercurial或者Bazaar中管理的源代码可以通过QuickBuild进行持续集成和发布管理,目前支持如下功能:
  • build时可以取出最新的源代码,也可以取出特定revision的代码。或者也可以在每次手工触发build的时候询问revision。
  • 对满足特定条件的build对应的源代码,可以选择在代码仓库中为其打上标签。比如您可以选择对所有成功通过测试的release build打上标签。
  • 通过比较任意两个build得到它们之间的源代码改动,并直接在QuickBuild中查看对应版本的源代码。
  • 提升特定源代码revision的级别。比如说从QA到release。
对这些分布式源代码管理系统,QuickBuild的gated push功能可以在相当程度上保证push到中心代码仓库的代码不会影响到其他从这里pull的人。具体工作原理如下:
  • 开发者需要将commit从本地代码仓库push到中心代码仓库的时候,先运行一个proof build。
  • QuickBuild收到proof build指令的时候,将开发者要push的commit发送到服务器上同其他人的最新的push想合并,然后在网格环境下运行build和测试。
  • 测试成功后,这些commit将会被QuickBuild自动push到中心代码仓库。
相比事后验证的持续集成方式,这种事前验证的方式能够有效防止中心代码仓库被不好的commit污染。

除上述功能,这个版本还集成了对Team Foundation Server, MSBuild和Visual Studio Solution builder的支持。加上已有的对FxCop,MSTest, NUnit, MBUnit,NAnt,NCover支持,QuickBuild现在已经能够很好的支持各种基于.NET的项目的持续集成了。
来自: www.pmease.com
10
1
评论 共 9 条 请登录后发表评论
9 楼 yjshen 2010-11-17 07:19
llade 写道
free community license  只支持16个 configuration,不知道这里所说的configuration是不是类似hudson的task?

类似于hudson的job
8 楼 llade 2010-11-16 22:58
free community license  只支持16个 configuration,不知道这里所说的configuration是不是类似hudson的task?
7 楼 lovefly_zero 2010-11-16 08:47
yjshen 写道
gladstone 写道
不知道比hudson如何

请参考下面新闻的评论:
http://www.javaeye.com/news/17680

对于lovefly_zero所认为的避实就虚,答复如下:
Hudson同样能完成这样的工作。
1、通过本地Git和Hudson持续集成服务器Salve容器可完成第一步的构建。也不会影响代码基线。
>> 那对于集中式的版本控制系统比如subversion呢?即便是对于Git这样的分布式版本控制系统,设置持续集成工具对每个开发者的本地repository进行监控和build意味着很大的工作量,后期维护也不方便。而且开发者需要先从中心仓库pull并merge,然后触发hudson运行build,再手工push到中心仓库。而QuickBuild将这些过程全部自动化了。
2、理想的项目构建一定是按生命周期分段执行,这样可以即缩短构建时间,又便于缩短构建失败时的检查时间。
>> 那对于非理想的项目构建呢?我们的理念是工具适应项目,而非项目适应工具。再说,即使是按照生命周期分段执行,也不能排除某个阶段build可以通过分布到多台机器上来提高速度吧。
3、Hudson同样可以创建流程,构建以后执行下阶段任务,从而串联到软件开发的整个生命周期。
>> 我这里所说的是人工干预的流程。对于满足特定条件的build,QuickBuild可以显示一组代表后续动作的按钮以触发下一阶段的流程。比如对于一个经过测试组充分测试的QA build,当项目经理登录时,QuickBuild可以显示一个Release的按钮来触发release流程。又或者对于一个dev build,当测试经理登录时,可以显示一个deploy的按钮来讲该build部署到测试环境中。
4、Hudson完全支持覆写机制,及其方便。同样你可以在对项目创建视图,每个视图管理一系列相关的任务。
>> 如果我理解正确的话,Hudson仅支持两级(视图和任务),而且看上去仅支持对象级的覆写。而QuickBuild可以支持任意定制的层次,并且通过变量和CGLib增强可以做到对任意属性的覆写,比如说我们在项目层可以定义一个svn的repository:
svn://svn.example.com/myproject/branches/${vars.get("branch")}
然后在分支层,只需覆写变量branch的值就可以做到对不同的分支进行持续集成了。而hudson需要覆写整个repository对象的定义,这样一方面增加工作量,另一方面如果以后svn的root url更改了,管理员需要在每个repository定义里做出相应的更改。


答复我很满意,期待QuickBuild更好的发展。
6 楼 phlsbg 2010-11-15 18:02
看起来不错
5 楼 yjshen 2010-11-15 12:27
gladstone 写道
不知道比hudson如何

请参考下面新闻的评论:
http://www.javaeye.com/news/17680

对于lovefly_zero所认为的避实就虚,答复如下:
Hudson同样能完成这样的工作。
1、通过本地Git和Hudson持续集成服务器Salve容器可完成第一步的构建。也不会影响代码基线。
>> 那对于集中式的版本控制系统比如subversion呢?即便是对于Git这样的分布式版本控制系统,设置持续集成工具对每个开发者的本地repository进行监控和build意味着很大的工作量,后期维护也不方便。而且开发者需要先从中心仓库pull并merge,然后触发hudson运行build,再手工push到中心仓库。而QuickBuild将这些过程全部自动化了。
2、理想的项目构建一定是按生命周期分段执行,这样可以即缩短构建时间,又便于缩短构建失败时的检查时间。
>> 那对于非理想的项目构建呢?我们的理念是工具适应项目,而非项目适应工具。再说,即使是按照生命周期分段执行,也不能排除某个阶段build可以通过分布到多台机器上来提高速度吧。
3、Hudson同样可以创建流程,构建以后执行下阶段任务,从而串联到软件开发的整个生命周期。
>> 我这里所说的是人工干预的流程。对于满足特定条件的build,QuickBuild可以显示一组代表后续动作的按钮以触发下一阶段的流程。比如对于一个经过测试组充分测试的QA build,当项目经理登录时,QuickBuild可以显示一个Release的按钮来触发release流程。又或者对于一个dev build,当测试经理登录时,可以显示一个deploy的按钮来讲该build部署到测试环境中。
4、Hudson完全支持覆写机制,及其方便。同样你可以在对项目创建视图,每个视图管理一系列相关的任务。
>> 如果我理解正确的话,Hudson仅支持两级(视图和任务),而且看上去仅支持对象级的覆写。而QuickBuild可以支持任意定制的层次,并且通过变量和CGLib增强可以做到对任意属性的覆写,比如说我们在项目层可以定义一个svn的repository:
svn://svn.example.com/myproject/branches/${vars.get("branch")}
然后在分支层,只需覆写变量branch的值就可以做到对不同的分支进行持续集成了。而hudson需要覆写整个repository对象的定义,这样一方面增加工作量,另一方面如果以后svn的root url更改了,管理员需要在每个repository定义里做出相应的更改。
4 楼 gladstone 2010-11-15 11:29
不知道比hudson如何
3 楼 yjshen 2010-11-15 11:08
gladstone 写道
链接也不给一个

忘记加了:http://www.pmease.com/features/whats-new/
2 楼 gladstone 2010-11-15 11:05
链接也不给一个
1 楼 lovefly_zero 2010-11-15 09:41
这种应该属于第二代持续集成工具。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • C语言计算pi精确至一亿位

    计算精确度可通过调整参数S、A进行调整,采用泰勒展开逼近

  • 高速求π值方法,求1亿位只需60秒!!!

    这是一个重要的步骤,因为它确保了所有的数据都被正确地写入了硬盘,并且释放了Python对这个文件的控制。在第二行,我们设置了mp模块的"dps"属性,这是"decimal places"的缩写,表示小数位数。在这里,我们设定了100000000位的精度,这意味着我们将要生成的π的值将精确到100000000位小数。然后,我们将mp模块中的π值(mp.pi)转换为字符串,并写入我们刚刚打开的文件。由于mp.pi已经根据我们之前设定的dps值计算出了高精度的π值,因此这将是一个非常长的数字。

  • 计算PI值到一亿位的算法 (转)

    计算PI值到一亿位的算法 (转)[@more@]我大体上考虑了一下用Delphi计算PI值到一亿位的算法,得到一个大体的算法,也好用来交流一下。这是一个构造一种新的长四则运算的算法。所谓长四则运算,是指用数据库的字段来作一个小数...

  • 用随机数计算π值

    #include #include #inc

  • 随机投点法计算圆周率

    #include #include #include using namespace std; // 获得0-1之间的随机数 double get_random_num () { return (double)rand () / RAND_MAX ; } // 用随机投点法计算 PI double darts (int n) { int k = 0 ; for (i

  • python篇---计算π的值

    π的计算采用近似计算     首先构造一个单位正方形和一个四分之一圆,然后随机想其中抛洒大量的点,每个点可能在圆内也可能在圆外,当点数足够多时圆内点将构成圆的面积,全部点将构成矩形面积,用圆内点数量除以全部点数量,就得到了π/4。    如果用python语言实现,那么问题的IPO已经清楚了。输入:抛点的数量。处理:对于每个点,计算点到圆心的距离,通过距离判断点在圆内还是圆外,然后统计圆内点的数量...

  • 用BBP公式计算π

    <br />//圆周率pi的计算(精确到小数点后1000位)<br /><br />#include<iostream.h><br />#include<math.h><br />#include<stdio.h><br />double bbp(int n,int k,int l)<br />{<br /> int i;<br /> long b=1;<br /> double c=1;<br /> if(n>k)<br /> {<br />  for(i=n-k;i!=0;i--)<br />   b=

  • 计算任意位数的Pi

    当用程序实现求pi的值时,也许你能够很快写出算法(利用求pi的几个公式),但是由于使用单变量保存结果,限于计算机硬件对变量的表示范围有限,因此,最多只能计算出pi值小数点后十多位。但需要得到一个更大位数的pi值时,就得考虑其他的算法。 我们采用这个公式计算pi: pi/2 = 1+1/3+1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9+...... 在计算上述公式的个分式值时,由于1/3这类的分数是无限循环小数,而使用单变量时,由于变量能表示的范围有限,...

  • mysql 2.71828_数学中的e=2.71828……到底是什么东西?

    这里的e是一个数的代表符号,而我们要说的,便是e的故事。这倒叫人有点好奇了,要能说成一本书,这个数应该大有来头才是,至少应该很有名吧?但是搜索枯肠,大部分人能想到的重要数字,除了众人皆知的0及1外,大概就只有和圆有关的π了,了不起再加上虚数单位的i=√-1。这个e究竟是何方神圣呢?在高中数学里,大家都学到过对数(logarithm)的观念,也用过对数表。教科书里的对数表,是以10为底的,叫做常用对...

  • c语言计算10亿位圆周率,C语言:圆周率的计算

    Description根据下面关系式,求圆周率pi的值,直到最后一项的值小于epsilon。epsilon的值由键盘输入。pi/2=1+1/3+2!/(3*5)+3!/(3*5*7)+...+n!/(3*537*...*(2n+1))Input输入一个浮点数表示epsilon的值Output输出圆周率Pi的值,保留6位小数。Sample Input0.000001Sample Output3.14...

  • 多线程求和,计算1到100000000(一亿)的和

    直接上代码: public class A { long value = 0; A(long value){ this.value = value; } }//类A用于记录各线程的和 public class MultiSum implements Runnable{ private A sum; private int fromInt; private int...

  • 计算PI(π)的几种方法

    计算π的方法 一、蒙特卡罗法 这种方法是一种利用计算机随机数的功能基于“随机数”的算法,通过计算落在单位圆内的点与落在正方形内的 点的比值求PI。 由于图形的对称性,我们靠考虑该图的四分之一部分。 假定一点能够均匀地扔到一个正方形中,计算落入其中的点个数。通过计数其中落入内切圆的点的个数; 如果一共投入N个点,其中有M个落入圆中,则只要点均匀,假定圆周的半径为R,则: M...

  • 一个很牛的计算pi的c程序!

    C语言是面向过程的一种高级程序设计语言,它在世界范围内使用很广泛,而且很流行。很多大型的应用软件,基本上是用C语言所编写的。在对操作系统以及系统使用程序、需要对硬件进行操作的场合,C语言较其他的高级语言更具优势。C语言应用很广泛,有个网友就分享了一个很牛的计算pi的c程序。 在这个程序的后面,很多网友留言: 网友一:试过了,好强,不过程序看不懂。 网友二:果然好程序,简单明了。只是太过简...

  • 精度最高的圆周率

    在进行图形编程时,经常使用圆周率。一般采用一个常量保存:PI=3.1415926535897626433我就能背这么多了。偶然一次看到一段代码,佩服的五体投地,这么保存圆周率可以说精度无与伦比:PI=ATN(1)×4其中:ATN(1)得出90度的弧度值,也就是PI/4。优点:这样的圆周率可以说与计算机的浮点数有同样的精度了。缺点:需要额外的三角计算,牺牲了一点点速度。但是仅仅在程序初始化阶段。 转...

  • 如何使用BBP公式直接计算π的第n位

    使用BBP公式可以直接求得十六进制π的第n位而不需要计算前n位的数,以下公式将直接求出十进制的π: 其中参数k代表的是所求π的精度,例如:当您希望求出π的前13位的话您只需要将k替换成13即可。其计算出来的结果为3.1415926... 接下来是如何求得十六进制π的第n位。 首先,您需要知道一个知识点:十进制的小数如何转换为十六进制? 例如,小数3.1415926转换为16进制为3.243f...

  • 计算π的代码(1亿位)——40min

    计算π的代码(1亿位) 会运行40min左右,不要着急

  • [Julia&Delphi]快速计算圆周率 Pi (π) 值

    算法参考自: 计算圆周率Pi(π)值,精确到小数点后10000位 - 圆周率10000位 - C++ 爱好者 分别以Julia和Delphi语言写的算法如下面所示。在一台10年的老电脑(CPU是E31230v2)测试,计算1万位的Pi值,Julia算法耗时4.87秒,Delphi算法耗时12.3秒。作为比较,原作者的C++Builder算法耗时8.6秒。 #Julia语言 function CalcPi() ARRSIZE = 10100 DISPCNT = 100...

  • JavaScript实现计算π值算法(附完整源码)

    JavaScript实现计算π值算法(附完整源码)π.js完整源代码 π.js完整源代码 const circleRadius = 1; function getNGonSideLength(sideLength, splitCounter) { if (splitCounter &lt;= 0) { return sideLength; } const halfSide = sideLength / 2; // Liu Hui used the Gou Gu (Pythagor

Global site tag (gtag.js) - Google Analytics