2010-01-04 67 views
4

我試圖使用Phing自動化:在需要的時候你如何管理你的構建[使用Phing]過程?

  • 運行測試
  • 每個開發人員的機器上運行數據庫遷移[dbdeply使用]
  • 部署到生產

我想在我的項目中添加一個構建文件夾並將所有構建配置文件和db變量存放在該文件夾中確實有意義。並將所有內容提交到SVN存儲庫。因此每位開發人員在從svn退房時都會得到更新的構建文件。並能夠運行構建以使用新更改更新他的數據庫。

在生產服務器上: 我打算在那裏添加另一個構建文件,以獲得svn中的最新標籤版本並執行JS壓縮CSS &。


我打算實現使用PHPUnderControl繼續集成,所以我可以跟蹤每個構建的結果,並在構建失敗時得到通知。

所以,你認爲這一切確實有意義,或者你有其他更好的建議嗎?

+0

退房Arbitracker作爲替代phpUnderControl的:HTTP:// WWW .arbitracker.org/news.html – Gordon 2010-01-04 10:44:56

+0

@戈登,謝謝我也會檢查一下。 – Shreef 2010-01-04 13:41:49

回答

10

你說的有道理:它非常接近我經常使用的(有時用螞蟻,有時用phing,有時用一些shell腳本)

build目錄,我想有這樣的事情:

build/ 
    testing/ 
    development/ 
    staging/ 
    production/ 
    common/ 

有了一個build.xml文件中的每個子目錄 - 包括所有其他build.xml文件,地處common目錄,其用意就是在「普通」文件中放置儘可能多的「通用」代碼,並且使每個環境特定的文件儘可能少地包含xml代碼。

這可以存在於phing (不知道它在穩定版本的最後一個版本的import任務來完成 - 我使用phing的SVN結帳,有這一項,該項目我目前正在研究)


但有一件事:你說你想從生產服務器部署到生產;我寧願,而不是:

  • 「發展」 的服務器上:
    • 從SVN出口
    • 壓縮JS/CSS和所有
    • 創建tar。GZ存檔
  • 上傳的是歸檔到生產服務器
  • 「生產」服務器上:即上傳檔案
  • 變化的幾個符號鏈接的使用新版本的
    • 未壓縮來源(見我給here,更多的信息回答)
    • 更新什麼在DB
  • 完成

的想法是到:

  • 以防萬一做的幾件事情,儘可能生產服務器
    • 上出了問題
    • 並且如果有一天,你的生產服務器無法訪問SVN服務器
  • 有一個物理歸檔文件,可以在多個生產服務器上部署


哦,還有,作爲一個旁註:你必須寫某種「如何部署到生產」的文檔,一步一步!

這將是真正有用的一天,你在度假,別人已經部署到生產,因爲一個緊急漏洞修復;-)