我在一個小團隊中工作,負責做網站以及網絡應用程序。我們的本地開發服務器與我們的標準生產服務器完全相同,我希望將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 init
和git clone [email protected]
,但我更喜歡這會自動完成。
完成此操作的最直接方法是使用上述命令進行更新後的掛鉤嗎?這似乎比我想象的要複雜一些,但我想這是一個相當常見的用例,所以也許我只是錯過了一些東西。
需要關於您的實施的更多細節。 IIS? Apache的?你使用任何Web框架? Rails的? Django的?你所有的服務器都是本地的,沒有防火牆可以與之抗衡嗎? – Andy 2012-03-31 18:22:43
更新後回答 – user1305321 2012-03-31 18:31:54
我在一艘類似的船上;我有興趣看看是否有解決方案可以在部署期間管理幾個「變量」。例如,在我們的Dev服務器上,我們將使用一個數據庫連接字符串(用於我們的開發數據庫服務器),對於生產,我們將使用生產數據庫服務器。我正在尋找一種解決方案,它將完成您的建議,並根據部署上下文自動切換一些字符串。 – 2012-03-31 21:14:06