2015-05-04 74 views
1

我正在工作場所實施Gitlab,並將所有人轉移到其上以更好地進行代碼審查,與提交直接相關的問題管理以及與Pivotal跟蹤器上的用戶故事集成。使用'git checkout -f'在Gitlab中部署裸露的git倉庫中的文件

我的當前設置的測試程序是這樣的:

  1. 的Git與所有對我的PHP基於Web的應用程序中的代碼裸回購在:在/ var /選擇/ gitlab/git的數據/庫/混帳/測試app.git

  2. 部署目錄爲:/無功/網絡/測試應用

在Git的回購目錄,我做了以下內容:

export GIT_WORK_TREE=/var/www/test-app 
git checkout -f master 

這就像一個魅力和所有的文件都可以在/ var/www/test-app按預期訪問。

這裏是我難住的地方。我希望Gitlab服務器僅託管Git裸回購站而不是部署目錄。部署目錄將託管在單獨的服務器上。

有沒有辦法與GIT_WORK_TREE有不同的服務器設置?我試圖把我的服務器的細節,如:

[email protected]:/var/www/test-app 

但沒有骰子。

這是甚至可能還是我在這裏吠錯了樹?會喜歡一些建議。

謝謝。

+0

gitlab服務器應該是gitlab服務器,沒有別的。這聽起來像你想建立一個持續的集成/構建服務器,它會在提交gitlab之後自動部署到你的登臺服務器。 –

+0

是的,這正是我期待的。你對這件事有什麼看法? – Kopty

+0

有很多CI服務器,比如Gitlab自己的CI,Jenkins,Teamcity等等。我們在這裏設置了一個插件,讓它看起來像一個Gitlab CI,它在commit上構建項目,運行測試和部署。 –

回答

1

而不是嘗試在遠端服務器上籤出,而應該(在相同的post-receive掛鉤中)推送到遠端服務器。

由於Git 2.3.32.4.0,使用push-to-deploy,在git服務器端使用config receive.denyCurrentBranch = updateInstead
請注意,這種方法有一些注意事項。

  • 您的服務器中將包含項目的整個歷史.git目錄。您可能想要確保它不能提供給用戶!
  • 在部署過程中,用戶可能會偶爾遇到站點處於不一致狀態,其中一些文件位於舊版本,其他文件位於新版本,甚至一半爲文件。如果這對於您的項目來說是一個問題,則推送部署可能不適合您。
  • 如果您的項目需要「構建」步驟,那麼您將不得不明確地設置,也許通過githooks。
+0

是的,我現在已經在我們現有的工作流程中運行了它,但是由於您指出的確切原因 - 我們的服務器包含一個不安全的.git目錄,我們希望移除它。我的任務是確保不再是這種情況,這就是爲什麼我正在探索諸如此類的選項。 – Kopty