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服務器。