2010-03-08 219 views
2

我剛剛爲我的初創公司設置了開發環境。我使用Hudson進行源代碼的持續集成。它每10分鐘輪詢一次SVN存儲庫的更改,以及是否有任何部署將它們從我們的DEV服務器部署到LIVE服務器。正確使用SVN和CI

我想要的是另一個從DEV部署到TEST的Hudson作業。我希望能夠將代碼提交到SVN,然後手動部署到TEST,執行手動QA檢查,然後將其轉移到LIVE。

有沒有一種方法可以在SVN中使用分支和樹幹來做到這一點?我希望它仍然每10分鐘輪詢一次,因爲有很多場合它應該直接從DEV發送到LIVE。我想也許我可以承諾一個分支,然後哈德森自動部署到測試,然後如果它工作得很好提交分支到樹幹。我對嗎??

在此先感謝

回答

3

我不明白爲什麼你想要一個單獨的測試步驟,如果仍然有「很多情況下它應該直接從DEV到LIVE」 - 正如@Hightechrider所說,聽起來有風險。我會做的方式是:

  • 有無哈德森檢測更改每10分鐘和部署到測試
  • 執行你的手工測試
  • 編寫一個部署您剛剛從測試方法進行測試SVN版本的另一個哈德森工作基於觸發器發送電子郵件到您的哈德森服務器住,例如,如果通過測試(見the Hudson Wiki瞭解詳細信息)

如果您的手動測試步驟2失敗,我假設你會想讓開發人員修復代碼並重復步驟1和2礦石部署到生產。

我想知道如果我們誤解了你的場景 - 如果是這樣,請添加一些更詳細的信息,說明你爲什麼有時想要部署到TEST和其他時間直播到現場。

+0

您也可以檢查促銷插件。有了這個,你可以促進某些構建產品。這將爲您節省發送電子郵件至哈德森的麻煩。 – 2010-03-09 15:08:53

1

我們所使用的TeamCity是建立,然後在二進制文件到一個單獨的BINARY SVN使用SVN LOAD_DIRS檢查測試。將這些位部署到測試服務器。如果它們看起來不錯,則手動啓動另一個使用SVN LOAD_DIRS的CI任務,將這些位複製到PRODUCTION SVN存儲庫,然後將這些位部署到生產環境中。

這樣做的好處是您可以將部署到每臺服務器的確切位複製一份,並且可以輕鬆回滾,或者可以查看任何特定版本(比如說上週五)並針對該版本進行測試。您還可以對二進制版本的配置文件進行更改,並將其部署到生產環境中,同時還記錄了誰更改了內容以及何時更改了內容。

這也爲您提供了一個具有原子屬性的部署系統 - 即當您嘗試將服務器更新到新版本時,您將獲得全部或全部,而不會發生部分/失敗的部署。

另一個優點是,你可以用最新版本在生產環境中替換單個內容文件,只需查看那些個人更改的文件 - 週五下午4點的方便功能,當你不願冒險進行全面部署以防萬一一些其他變化潛入二進制文件。

我看不到我們想要直接部署到LIVE的場景 - 聽起來有風險。

+0

我可能會完全愚蠢,但我以前沒有聽說過SVN的LOAD_DIRS命令。你可以解釋嗎? 謝謝 – christophmccann 2010-03-08 22:35:16

+0

svn_load_dirs.pl是SVN提供的一個腳本,直到最近才提供,但如果你四處尋找,腳本仍然可用。它可以用來將目錄加載到該代碼的現有副本的頂部,並且它將正確地保留未更改的文件,記錄更改後的文件的更新並添加新文件。如果使用它將二進制文件加載到二叉樹中,則可以保留文件級別的版本歷史記錄(比刪除目錄並添加替換文件更好),並可以準確查看每個修訂版本中已更改或添加的文件。 – 2010-03-08 23:47:02