我正在与C#项目上的一个小型(4人)开发团队合作.我已经提议建立一个构建机器,它将对项目进行夜间构建和测试,因为我知道这是一件好事.麻烦的是,我们这里没有足够的预算,所以我必须证明费用是合理的.所以我想知道:
我意识到这是一个非常大的话题,我刚刚开始.我在这里找不到这个问题的副本,如果那里有一本书我应该得到,请告诉我.
编辑:我终于开始工作了!Hudson非常棒,FxCop表明我们认为实现的一些功能实际上是不完整的.我们还必须将安装程序类型从Old-And-Busted vdproj更改为New Hotness WiX.
基本上,对于那些正在关注的人,如果你可以从命令行运行你的构建,那么你可以把它放到哈德森.通过MSBuild从命令行运行构建本身就是一个很有用的练习,因为它会强制你的工具是最新的.
在2011年,哈德森和詹金斯跟随(恕我直言)的情况 - 哈德森有点稳定,但詹金斯的发展有点快.
现在2012年"哈德森与詹金斯"的情况如何?
这是一个有点虚荣的问题,但BuildBot的输出并不是特别好看.
例如,与...相比
..和其他人,BuildBot看起来相当......古老
我目前正在玩Hudson,但它是以Java为中心的(虽然在本指南中,我发现它比BuildBot更容易设置,并产生了更多信息)
基本上:有没有针对python的持续集成系统,它会产生大量闪亮的图形等等?
更新:从那时起,Jenkins项目取代了Hudson作为该软件包的社区版本.原作者也转到了这个项目.Jenkins现在是Ubuntu/Debian,RedHat/Fedora/CentOS等标准软件包.以下更新仍然基本正确.与詹金斯一起做这件事的出发点是不同的.
更新:在尝试了一些替代方案之后,我想我会坚持使用哈德森.诚信很好,很简单,但非常有限.我认为 Buildbot更适合拥有众多构建从服务器,而不是像我使用它一样在一台机器上运行.
为Hudson设置Python项目非常简单:
java -jar hudson.warhttp://localhost:8080git在Hudson全局首选项中设置路径)nosetests通过,easy_install如果它还没有nosetests --with-xunit --verbose**/nosetests.xml这就是所需要的.您可以设置电子邮件通知,插件值得一看.我目前正在使用的一些Python项目:
nosetests --with-coverage(这会将输出写入**/coverage.xml)我的公司正在考虑改变持续集成服务器(我不会说我们现在有哪一个,所以我不会反对你的反应:))我想知道是否有人有任何建议?最佳用户体验,维护难度等......
我们的代码都在java中,我们使用ANT作为构建工具.
我认为标题总结了它.我只是想知道为什么一个或另一个对于Svn的Java项目的连续集成构建更好.
最近,在我们公司,我们决定使用Ansible进行部署和持续集成.但是当我开始使用Ansible时,我找不到用于使用Maven构建Java项目的模块,或者用于运行JUnit测试或JMeter测试的模块.
所以,我处于一个令人怀疑的状态:可能是我以错误的方式使用Ansible.
当我查看Jenkins时,它可以执行构建,运行测试,部署等操作.Hudson缺少的是在AWS等云环境中创建/删除实例.
那么,一般来说,我们需要使用Ansible/Jenkins的目的是什么?对于CI,我需要使用Ansible和Jenkins的组合吗?
请详细说明Ansible的正确用法.
我正在寻找一个轻量级,易于设置的CI服务器,我可以在我的笔记本电脑上运行Visual Studio和Resharper.我显然看着像CruiseControl,TeamCity等所有大牌,但对我来说最大的考虑因素是易于设置和较小程度的内存占用.
编辑:我也想在大2/3之外的其他解决方案的一些建议......
编辑:如果没有其他人有任何补充,我即将接受答案?
我正在寻找一种方法来提高我团队的工作效率,一种方法是缩短编译和单元测试所需的时间,打包和部署我们的Java EE应用程序,这个应用程序越来越大.
我所知道的简单解决方案是建立一台功能强大的计算机,它具有N个处理器(N~ =开发人员数量)和一个超快的磁盘系统和大量内存,并运行此计算机上的所有内容并通过X远程连接到它.它肯定比编译我们的笔记本电脑快得多,但仍然比购买每个开发人员他/她自己的超级计算机更便宜和更容易维护.
有没有其他方法可以解决这个问题?例如,我们可以在本地运行我们的IDE然后告诉它远程编译java源吗?Netbeans/Eclipse/IntelliJ /等可以这样做吗?或者是否有一个特殊的工具可以实现远程Java编译,也可以使用多个处理器?它不一定是免费/开源的.
不幸的是我们的笔记本电脑必须运行一个(公司管理的)Windows Vista,所以另一个原因是让我们使用独立的服务器计算机,最后摆脱烦人的托管环境.
编辑:总结到目前为止的答案,缩短构建时间的一种方法是单独为开发人员保留编译(因为编译应该是快速的),跳过运行单元测试和热部署(没有打包)到容器.
然后,当开发人员决定检查他/她的代码时,会触发持续集成服务器(如Hudson)来清理和构建并运行测试和打包和部署.
解决方案:我接受了Thorbjørn的答案,因为我认为这将是我最接近我计划进行的方式.虽然出于好奇,我仍然有兴趣解决原始问题(=远程Java编译)...
我们为Hudson提供了一个自定义插件,可以将构建的输出上传到远程计算机上.我们刚开始研究使用Hudson slave来提高构建的吞吐量,但是使用自定义插件的项目无法使用FileNotFoundExceptions进行部署.
从我们可以看到,即使构建发生在从属服务器上,插件也会在主服务器上运行.未找到的文件确实存在于从站上,但不存在于主站上.
问题:
我正在和Hudson建立一个连续集成系统,这真是太棒了.我有一个SVN存储库并集成了一个post-commit钩子,当有人提交到存储库时,它会通知Hudson.这部分工作很精彩.
一般的想法是,如果项目失败,使用单元测试或其他任何东西,它应该告诉协作者(我使用简单的电子邮件通知器atm).但如果它成功了,我希望它能够编译项目并构建一个未签名或签名的.apk文件.
什么是最简单或最聪明的方法?我已经读过你可以使用Shell命令来构建.apk,但我似乎无法弄清楚它是如何工作的?任何人都可以告诉我如何做到这一点,还是应该寻求其他解决方案?
提前致谢
芬恩拉森