2012-03-31 66 views
2

我在一個小團隊中工作,負責做網站以及網絡應用程序。我們的本地開發服務器與我們的標準生產服務器完全相同,我希望將Git集成到我們的工作流程中。我目前使用Gitlab來託管和訪問存儲庫。使用Git的Web應用程序開發/生產設置

我如何設想是:

  • 從中央庫拉
  • 在當地發展
  • 推動開發服務器
  • 測試
  • 合併
  • QC
  • 包裝和船舶到生產服務器

我的問題涉及推送到dev服務器階段。我希望能夠將分支推送到開發服務器,然後立即在瀏覽器中瀏覽該分支 - 不是源代碼,而是網站本身。

是否有可用於完成此目的的自託管軟件?

就像我說的,我目前正在使用Gitlab。我已經試過Gitorious(設置太多),Girocco,git-php,並且無法讓他們在我們的開發服務器上工作,至少不是沒有改變他們,這打破了擁有相同開發和生產服務器的觀點。

這個問題是基於我的工作流程是健全的。如果我的問題由於工作流程不佳而變得模糊,我很樂意在工作流程中指出錯誤。

更新:我們主要在PHP(各種框架和CMSes)中開發,我們的服務器在Ubuntu 10.04上運行在Nginx後面的Apache。不同的開發人員在同一棟大樓的不同辦公室中,但在不同的網絡上。雖然我們無法直接訪問彼此的機器,但我們都可以訪問任何端口上的開發服務器。

更新X2: VonC的答案清理我最有問題的,但理解這一點比較好,我想問一個更具體一點的問題:

正如我跑gitolite( Gitlab就是建立在這個基礎之上的),而當gitolite存儲裸倉庫時,在將分支推送到開發服務器時,如果有工作文件夾,我無法以我的方式在開發服務器上瀏覽該站點。雖然我可以從gitolite裸倉庫進入dev服務器的/ var/www,git initgit clone [email protected],但我更喜歡這會自動完成。

完成此操作的最直接方法是使用上述命令進行更新後的掛鉤嗎?這似乎比我想象的要複雜一些,但我想這是一個相當常見的用例,所以也許我只是錯過了一些東西。

+0

需要關於您的實施的更多細節。 IIS? Apache的?你使用任何Web框架? Rails的? Django的?你所有的服務器都是本地的,沒有防火牆可以與之抗衡嗎? – Andy 2012-03-31 18:22:43

+0

更新後回答 – user1305321 2012-03-31 18:31:54

+0

我在一艘類似的船上;我有興趣看看是否有解決方案可以在部署期間管理幾個「變量」。例如,在我們的Dev服務器上,我們將使用一個數據庫連接字符串(用於我們的開發數據庫服務器),對於生產,我們將使用生產數據庫服務器。我正在尋找一種解決方案,它將完成您的建議,並根據部署上下文自動切換一些字符串。 – 2012-03-31 21:14:06

回答

0

您可以結合:

  • 後,收到勾走你的活動網站(非裸露的回購協議),並用最新的內容的提交推到裸露的回購協議。
    見「Git submodule on remote bare」(注:子模塊是沒有必要在你的情況,但這個答案說明的牽引機構仍然適用)

  • authorization layer like gitolite,如果要管理誰可以推到開發服務器。並且還可以控制檢出的repo上的chmod。
    請參閱 「ee

  • 一個filter driver爲了根據部署環境中管理特定文件的內容:

filter driver

A 'smudge' 腳本可以生成正確的內容在git checkout期間。

+0

謝謝,這有很大的幫助,儘管我能夠將問題重新說明爲更具體。 – user1305321 2012-04-01 20:26:34

相關問題