11

所以,我和一个朋友一直在讨论持续集成和BAT/PowerShell脚本与CI服务器,比如CruiseControl.Net或哈德森。持续集成:PowerShell中与CI服务器(或CC.NET哈德森)

下面的PowerShell脚本的伪作品从SVN更新,建立使用的MSBuild,部署/复制出来,更新的应用程序构建/修订版本号,并在构建失败电子邮件。下一步是在MSTest中添加呼叫,并在未成功时通过电子邮件发送结果。

  1. SVN更新
  2. 的msbuild> build_deploy_development_out_msbuild
  3. ([XML](SVN信息--xml))。info.entry.commit.revision + [炭] 13 + [字符] 10 +(回波%DATE%%TIME%)> build_revision_number.html
  4. $行号=选择字符串build_deploy_development_out_msbuild -pattern “构建失败” | Select-Object Linenumber
  5. $ smtp = New-Object System.Net.Mail.SMTPClient -ArgumentList localhost |如果($ linenumber> 0)$ smtp.Send(“From:Email”,“To:Email”,“build failed”,“build failed ... some some must die!”)

This has当我们使用项目的特定工具(构建工具,源代码管理,单元测试)(例如,msbuild,nant,svn)编写自己的shell脚本来实现相同的目标时,将我引向CI服务器的价值问题,git的,NUnit的,MSTEST等)

我没有经历过的维护成本呢。我想让别人对你的shell脚本和CruiseControl.Net或Hudson进行评论。请注意,我没有CI服务器的使用经验,所以请不要把它当作CI服务器的关键。我根本不知道最好的答案,并认为我会问社区。

祝好! Pete Gordon

+0

这应该是社区wiki,因为没有明确的答案 – 2009-10-13 19:09:35

+0

为什么CC.NET或Hudson甚至列出?这看起来像是一个PowerShell VS CI问题。为什么语义? – TheOptimusPrimus 2013-08-29 18:34:50

回答

3

几个星期前我已经安装了Hudson来替换当前的CruiseControl服务器。我在哈德森看到的最大优点是几乎任何人都可以使用它,而使用CruiseControl(或批处理文件)启动参数化版本对于很多人来说仍然很可怕。

通常我倾向于写使用Ant我所有的构建脚本(因为它是便携式),插入了几个参数,我调用它们哈德森。

哈德森给你的脚本有很大的知名度(一切都在头版上看到),他们是自我解释。通常使用bash脚本,你需要写一个自述文件(没人读),并记住它们的位置。

3

......或者两者都有。 Ayende(Rhino Mocks的创造者)最近做了这件事。他使用PowerShell编写了一个CI服务器。也许this为您的讨论提供了新的见解。

9

CI服务器给你几个优点:

  • Web访问,通常使用与现有的认证机制(参见Hudson的ActiveDirectory的/ LDAP支持)的单元测试现有的支持
  • 吨的整合能力,zip压缩包creationg等
  • Hudson(和其他人)支持从构建节点,用于执行分布式CI任务。
  • 无需自己维护它。

有些可能不是你所需要的现在事情,但你确定他们是不是你可能需要在未来的事情?

+1

很想看到民意使用这些类型的功能的民意调查。我不是100%自信,我都理解他们。它确实让我对PowerShell中的压缩归档感到好奇,并且我发现这... http://tfl09.blogspot.com/2008/12/zip-files-with-powershell.html 谢谢! – petegordon 2009-10-14 10:39:50

+1

我已经使用了一些这些功能,并且我已经构建了一些adhoc Hudson插件来解决一些项目特定的需求。 Hudson最重要的一点是它是一个越来越多的插件项目。 – 2009-10-14 12:48:29

+0

您将如何使用Powershell执行并发构建?您将如何管理版本控制,部署和代码覆盖率报告?为什么重新发明轮子? – TheOptimusPrimus 2013-08-29 18:36:23

1

一年来,我一直试图维护自定义编写的Python脚本来完成基本的CI工作:通过电子邮件接收提交通知,检出和构建内容,发回责备和恭喜,然后当它发生时发布此供团队中的其他人使用,结果raaaather无法监控,网络访问等无法使用。

然后我潜入buildbot,发现它真的很漂亮。我已经在几天内建立了基本相同的流程。构建脚本是一个真正的Python对象,它可以在主设备上进行定制,从那里转移到从设备并在那里执行。建立在扭曲的框架上,这是很多东西开箱即用;)

虽然Web UI很简约,但足够。

那么,这是未公开过,虽然我靠近它这次%)

1

下面是我的CI服务器通过PowerShell脚本

  • 高度可配置插件可在思念用于所有不同类型的版本控制,通知和测试。
  • 日志这些保持奇妙。失败和成功的建立日志在你的指尖。
  • 调度您可以设置各种调度包括基于triggerring其他成功的构建
  • 安全您可以设置不同的群体能够执行,仅查看或设置看到一些项目
  • 能见度您可以为不同的受众使用网络仪表板或cctray。
  • 可扩展性。在需要时易于缩放。

如果你不得不为大量不同的环境和团队项目维护版本,那么CI服务器是最好的选择。除此之外,一个简单的PowerShell脚本足以满足小型项目的需求。项目增长后,您可以将现有的PowerShell脚本连接到CI服务器。