2010-07-13 74 views
2

我想問一下關於Hudson CI服務器上PHP項目發佈管理的真實生活經驗。Hudson和PHP項目發佈管理

我們的項目分成子項目:前端,框架,庫。一切都作爲自己的項目存儲在我們的SVN中。不同的前端可能取決於不同版本的框架,而框架本身取決於不同版本的庫。

到目前爲止我們手工發佈管理。我們有一個環境作爲測試和生產,以避免項目發佈時出現環境差異問題。我們在SVN中標記每個子項目的發行版本號,並檢查測試域中可以訪問的所有測試項目。一旦我們測試並修復了這些錯誤,我們將SVN中的所有新版本標記爲生產,並重新鏈接生產域以指向新代碼。這個手動過程有其明顯的問題,我們沒有辦法保持它。

根據我的研究轉移到我已經安裝了哈德森和配置它PHP項目(Phing,ppUnit,等...)我所熟悉的寫作建立Phing或螞蟻腳本下的自動化解決方案。我將所有可能的「基礎」設置CI環境和準備項目並做到這一點。我沒有發現的是一個發佈管理的例子,類似於我們手動考慮我們所有的依賴關係。你能指點我一個正確的方向嗎?

+0

投票轉向程序員。stackexchange.com – Mchl 2011-02-02 11:00:17

回答

1

恐怕沒有這麼複雜的東西一應俱全。我們必須解決相當類似的問題,並且我們最終使用了您計劃使用(或已經在使用)的非常類似的配置。

我們有多個應用程序核心,然後在其上進行特定的客戶端修改。全部存儲在SVN中。此外,我們使用svn:externals將Framework和其他第三方庫與應用程序鏈接起來。

所有使用Phing完成,雖然我們花了一些時間,Phing幫助了很多,我真的可以推薦它。

使用phing自動獲取客戶端特定插件。一切都可以通過構建屬性進行配置。

對於數據庫架構更新,我們很高興與dbdeploy這是Phing的一部分。雖然我們必須稍微修改它以滿足我們的需求。

另外,我們還增加了對創建預配置的自解壓Linux安裝程序,因此創建一個可部署的包的整個複雜的過程,包括調用一個phing目標,並傳遞一個正確的編譯屬性文件的支持。爲了創建這些安裝程序,我們使用這種簡單的技術(http://www.linuxjournal.com/node/1005818)。 再次使用Phing,創建的包會自動上傳到目標服務器,通過SSH執行以進行部署。

然後我們使用Hudson自動創建安裝程序包(除了自動運行phpunit測試和Selenium/Hmres測試)並將它們存儲在指定的位置或作爲工件。然後,我們的支持團隊可以抓包並自行完成生產部署(我們的QA /測試環境由Hudson自動更新)。

此外,代碼在必要時使用ZendGuard自動編碼和許可。

上面的簡要說明只是爲了說明什麼可以使用哈德森Phing,SVN和PHP來實現。完整的技術細節顯然對於這篇文章來說太長了,但我很樂意在其他地方闡述更多。