任何人都可以在CI服务器上编译.NET 4.0应用程序,而无需在CI服务器上安装Visual Studio 2010? .NET 4.0没有SDK。 在CI服务器上安装了.NET 4.0。 Msbuild.exe适用于简单的项目,并提供以下警告: (GetReferenceAssemblyPaths target) – > C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(847,9):警告MSB3644:“.NETFramework,Version = v4.0”没有find。 要解决此问题,请为此框架版本安装SDK或定位包,或者将您的应用程序redirect到您安装了SDK或定位包的框架版本。 请注意,程序集将从全局程序集caching(GAC)中parsing出来,并将用于代替引用程序集。 因此,您的程序集可能无法正确定位您想要的框架。
我有一个包含MSTest集成testing的dlltypes的项目 。 在我的机器上testing通过了,我想要在CI服务器上发生同样的事情(我使用TeamCity)。 但testing失败,因为我需要调整app.config中的一些设置。 这就是为什么我想有一个单独的第二个app.config文件,将保存CI服务器的设置。 所以我想有 / SLN / PROJ app.config(我认为这是VS所要求的) app.Release.config(这是一个独立的独立configuration文件) 因此,如果我在configuration项中select发布configuration,我想使用app.Release.config文件而不是app.config 问题 对于简单的.dlltypes的项目,这似乎并不简单。 对于web项目,我可以做webconfiguration转换。 我发现了一个黑客如何做一个dlltypes的项目这些转换,但我不是一个黑客的粉丝。 题 什么是调整app.config文件的标准方法,这取决于.NET项目的构buildconfiguration(如Debug,Release,…)?
当你想要进行持续集成时,什么是最好的分支策略? 释放分支:在树干上开发,为每个版本保留一个分支。 function分支:在单独的分支中开发每个function,只有合并一次才能稳定。 同时使用这两种策略是否合理? 如在你分支每个版本,但你也支持大function? 这些策略之一是否与持续集成更好地匹配? 如果使用不稳定的中继线,使用持续整合更有意义吗?
我自己和我的团队在增加程序集版本号方面是可怕的,我们经常以1.0.0.0版本发布程序集。 显然,这导致了很多头痛。 通过我们的CI平台,我们的实践变得越来越好,我真的希望将其设置为在assemblyinfo.cs文件中自动增加值,以便我们的程序集版本自动更新那个集会。 我以前设置(之前我们发现Hudson )通过msbuild或命令行(不记得)增加值,但与哈德森,这将更新SVN存储库,并触发另一个版本。 Hudson每小时轮询一次SVN会导致一个缓慢的无限循环。 有哈德森增加版本号一个坏主意? 什么是替代方法呢? 理想情况下,我的解决scheme标准是: 在构build之前增加buildinfo.cs中的内部版本号 只增加已更改的程序集中的内部版本号。 这可能是不可能的,因为Hudson每次构build时都会擦除项目文件夹 将更改的assemblyinfo.cs提交到代码库(当前为VisualSVN ) 不会导致Hudson在下次扫描更改时触发新的构build 在我的脑海里解决这个问题,我可以很容易地通过batch file/命令想出一个解决scheme,但是我所有的想法都会让Hudson在下一次扫描时触发一个新的构build。 我不是在找人为我做所有事情,只是指出我的方向是正确的,也许是让哈德森忽略某些SVN提交等技巧。 到目前为止,我发现的所有内容都只是一篇文章,解释如何自动增加版本号,没有考虑到可能陷入无限循环的CI平台。
这是一个微不足道的问题,但是BuildBot的输出并不是特别好看。 例如,相比.. phpUnderControl jenkins 哈德森 CruiseControl.rb ..和其他人, BuildBot看起来相当..古老 我目前正在玩哈德森,但它是非常以Java为中心(虽然有了这个指南 ,我发现比BuildBot更容易安装,并且产生了更多的信息) 基本上来说:是否有任何针对python的持续集成系统,可以产生许多shiny的graphics和类似graphics? 更新:从这一次Jenkins项目已经取代哈德森作为包的社区版本。 原作者也搬到了这个项目。 Jenkins现在是Ubuntu / Debian,RedHat / Fedora / CentOS等标准软件包。 以下更新仍然基本正确。 与Jenkins做这件事的出发点是不同的。 更新:尝试了几个select后,我想我会坚持哈德森。 诚信很好,很简单,但是相当有限。 我认为Buildbot更适合拥有大量的构build奴隶,而不是像我一直在使用它的单机上运行的所有东西。 为一个Python项目设置Hudson非常简单: 从http://hudson-ci.org/下载Hudson 用java -jar hudson.war运行它 打开默认地址http://localhost:8080的Web界面 去pipe理哈德森,插件,点击“更新”或类似的 安装Git插件(我必须在Hudson全局首选项中设置gitpath) 创build一个新项目,input仓库,SCM轮询间隔等等 如果还没有,请通过easy_install安装nosetests 在构build步骤中,添加nosetests –with-xunit –verbose 选中“发布JUnittesting结果报告”,将“testing报告XML”设置为**/nosetests.xml 这就是所有必需的。 你可以设置电子邮件通知, 插件是值得一看。 我正在使用Python项目中的一些: SLOCCount插件来计算代码行(并绘制它!) – 您需要单独安装sloccount ViolationsparsingPyLint输出(可以设置警告阈值,绘制每个构build的违规数量) Cobertura可以parsingcoverage.py的输出。 Nosetest可以在运行testing时收集覆盖范围,使用nosetests –with-coverage (将输出写入**/coverage.xml )
那里的人都有哈德森和竹子的经验? 对这些产品的相对优势和劣势有什么想法? 好吧,由于人们不断提及其他CI产品,我会进一步开放。 这是我的一般问题。 我想为一个新项目build立一个CI系统。 这个项目可能会有Java组件(WARs和JARs),一些python模块,甚至可能还有一个.NET组件。 所以我想要一个CI服务器,可以: 处理多种语言, 将工件部署到服务器(即,如果所有unit testing都通过,则部署战争)。 我也想要一个体面的代码覆盖工具集成的东西。 好看的报告很好,但不是必需的。 出现问题时提供多种通知机制。 我不担心托pipe。 我将在本地服务器或Amazon实例上运行它。 另外,这也许是天空中的馅饼,但有什么东西,也可以build立iPhone应用程序?
这可能很简单,但是我找不到任何提示。 那么一般来说,应该怎么做,特别是在Mac?
我正在与一个C#项目的小型(4人)开发团队合作。 我build议设立一个build造机器,每晚都会build造和testing项目,因为我明白这是一件好事。 麻烦的是,我们在这里没有太多的预算,所以我必须certificate这些费用是合理的。 所以我想知道: 我需要什么样的工具/许可证? 现在,我们使用Visual Studio和Smart Assembly来构build,而使用Perforce进行源代码pipe理。 我需要其他的东西,还是有相当于一个cron作业来运行自动脚本? 究竟是什么,这会得到我,除了一个破碎的构build指示? 我应该在这个解决scheme(sln文件)中设置testing项目,这些脚本将运行testing项目,所以我可以testing特定的function? 目前我们有两个这样的testing,因为我们没有时间(或坦率地说,是经验)做好unit testing。 我需要什么样的硬件? 一旦构build完成并testing完毕,将其构build在ftp站点上还是采取其他方式进行内部访问是一种常见做法? 这个想法是,这台机器进行构build,我们都去,但如果必须的话,可以debugging构build。 我们应该多久做一次这种构build? 空间如何pipe理? 如果我们每晚build造,我们应该保留所有的旧build筑物,还是在大约一个星期左右之后开始抛弃它们? 还有什么我不在这里看到? 我意识到这是一个非常大的话题,我刚刚开始。 在这里我找不到这个问题的重复,如果有一本书我应该得到,请让我知道。 编辑:我终于得到它的工作! 哈德森是完全不可思议的,FxCop显示我们认为实现的一些function实际上是不完整的。 我们还必须将安装程序types从旧的vdproj更改为新的Hotness WiX。 基本上,对于那些正在关注的人,如果你可以从命令行运行你的构build,那么你可以把它放入哈德森。 通过MSBuild从命令行运行构build本身是一个有用的练习,因为它会迫使您的工具变得最新。
这三个词有什么区别? 我的大学提供了以下定义: 持续集成基本上只是意味着开发人员的工作副本每天几次与共享主线同步。 持续交付被描述为持续集成的逻辑演进:始终能够将产品投入生产! 连续部署被描述为持续交付后的合理下一步:在产品通过QA时自动将产品部署到生产环境中! 他们还提供了一个警告:如果您能够连续部署到testing系统,有时候也会使用术语“连续部署”。 所有这些让我感到困惑。 任何解释更详细一点(或带有一个例子)赞赏!
我使用声纳来衡量代码质量。 我不知道的一件事是使用Cobertura测量代码覆盖率的步骤。 我遵循http://cobertura.sourceforge.net/anttaskreference.html中的步骤,并能够生成XML文件。 我如何获得这些XML文件到SONAR? 在SONAR中使用Cobertura有更简单的方法吗? 我在不同于我的SONAR服务器的服务器上运行代码覆盖(Cobertura)。 两台服务器都在LINUX下运行。 谢谢您的帮助!