2012-02-28 48 views
2

我有計劃建立一個SVN服務器用於測試目的。 現在是我的問題。 我如何自動將提交的文件部署到我的開發/登臺網站的路徑?我如何自動部署提交到網站?

我已經發現我可以在SVN中使用post-commit hook,但我該如何配置?

所有提交的文件必須在路徑中部署http://dev.staging.mywebsite.com: /家庭/ WWW的/ dev /分期/

和存儲庫位於: /家庭/ SVN/mytestscript/

我該怎麼做?

+0

我認爲即使在臨時服務器上,部署網站的post-commit掛鉤也是一個壞主意。有專門用於部署的構建工具,我只使用Maven,但其中還有其他許多工具,如Ant。 – StuR 2012-02-28 15:15:37

+1

不好主意,但你有這個想法嗎? – Aar 2012-02-28 15:31:30

+0

你可以嘗試這個鏈接,我想你將不得不編寫一個部署腳本: https://mikewest.org/2006/06/subversion-post-commit-hooks-101 – mpm 2012-02-28 15:40:35

回答

0

編寫一個用於部署的post-commit hook是一個不錯的主意。

更好的解決方案是使用像Capistrano(Ruby)或Fabric(Python)的工具。

+0

你的理由是什麼?檢查您的網站並沒有那麼糟糕,您承諾了什麼? 你的觀點是什麼? – Aar 2012-02-28 17:51:54

+0

尼古拉斯是正確的。看到我的[回覆](http://stackoverflow.com/a/9489149/368630)。 – 2012-02-28 21:15:42

0
  1. svn diff --summarize in post-commit hooks。 Details here

  2. 替代選擇1(大轉移,更多的時間和停電) - SVN導出+刪除+複印件出口樹

  3. 替代選擇2所有舊的數據 - 臨時站點是額外的工作拷貝,post-commit鉤子它發起svn up

9

尼古拉斯丁:這真是一個壞主意,寫部署post-commit鉤子。

Aar:你有什麼原因?檢查您的網站並沒有那麼糟糕,您承諾了什麼?你的觀點是什麼?

我必須同意Nicholas Ding。問題在於,當您通過post-commit掛鉤進行部署時,開發人員正在等待提交完成。如果您的部署只需30秒即可完成,那麼開發人員正在等待您的提交後掛接完成時間爲30秒。

如果每次開發者提交一個文件,他們必須等待30秒才能完成該提交,您認爲會發生什麼?你認爲他們會如何看待Subversion,一般的開發過程以及你作爲CM?將你的部署做爲post-commit hook並不完全是一個職業增強的舉措。


我建議你看看Jenkins。詹金斯是所謂的連續構建系統。您可以設置Jenkins,以便每次開發人員進行提交時,Jenkins都會執行構建。這樣,當你的部署發生時,你不會捆綁Subversion。

好的是,詹金斯也可以做你的部署。而且,如果部署失敗,它可以向做出提交的開發人員發送電子郵件。詹金斯甚至可以爲你運行一些測試。例如,也許你的部署工作,但更改後的代碼會導致錯誤。這可能是很好的檢測。而且,您可以在Jenkins中存儲可部署的工件,以便在部署之前對其進行測試。如果測試有效,您可以返回到Jenkins的構建版本,單擊按鈕並執行部署。作爲另一個好處,Jenkins允許開發人員查看所有更改,構建和部署的歷史記錄。一旦您開始測試,它也可以顯示所有測試的歷史記錄。如果您使用Jira,Bugzilla,MantisBF,Track或任何其他流行的問題跟蹤系統,Jenkins可以與這些系統進行集成,以幫助您跟蹤哪些構建特定問題得到處理。

即使你不需要編譯任何東西(比方說你的整個網頁只是PHP文件和JavaScript),你可以使用Jenkins進行部署和測試,並且仍然可以看到很多好處。

Jenkins是一款非常棒的軟件,它可以真正改善您的開發過程並且在不降低Subversion的情況下處理您的問題。另外,Jenkins非常易於使用,因此使用Jenkins可能會比使用post-commit鉤子時想要做的事更快。

+0

您可以通過讓鉤子關閉部署過程來避開提交延遲,但是當然如果部署失敗,您將失去拒絕提交的能力。我認爲使用詹金斯是一個更強大和明智的解決方案。 – TMN 2012-02-28 20:37:25