2014-11-03 157 views
2

我們的Gitlab服務器在我們的辦公室運行在ubuntu服務器上。我正在使用每個回購的後接收掛鉤進行自動部署。這就是我所做的,使用gitlab自動部署

  1. 我在post-receive文件中寫了shell腳本,將代碼從gitlab服務器推送到我們的實際生產服務器。
  2. 因此,我們的gitlab服務器中的所有回購都有post-receive hook來進行自動部署。
  3. 我在生產服務器上安裝了git bare repo來接收代碼gitlab服務器。
  4. 在生產服務器的裸回購中,我編寫了另一個post-receive hook來部署使用GIT_WORK_TREE的代碼,並在相同的post-receive鉤子中重新啓動nginx服務器。

現在我想通過現有的標準工具進行自動部署,因爲使用這種部署方式,我需要配置所有的回購,因此它會花費很多時間。有什麼其他的方法來做這個自動部署。

生產服務器:Ubuntu的14.04LTS, 生產網絡服務器:nginx的, 本地的Git服務器:gitlab。

更新:我想這樣做,因爲我有問題與@Ciro Santilli解釋的gitlab外殼。我也在做git push production作爲@Ciro桑蒂利答案的鏈接後提到,我有問題與gitlab外殼。但是我想要做的就是Gitlab_CI,push to master branch我們的生產服務器應該更新。我會嘗試使用Gitlab_CI,但我想知道是否有任何其他工具可以做到這一點。

回答

3

編輯:與Custom Hooks feature,如果您有文件系統訪問權限,不使用掛鉤的舊理由不再適用。不過,我還是建議你使用CI因爲它是:

原因自定義魚鉤功能之前沒有使用鉤子:

  • 他們都回購之間共享
  • 他們可能會產生合併當你更新gitlab殼
  • 他們是安全關鍵gitlab和接觸他們的衝突打開您漏洞

就像在討論:Gitlab repository mirroring

除非你指定有關更多的除了你想用Git做的部署,沒有什麼GitLab具體說明它,答案將與通用Git問題相同:Deploy a project using Git push

如果你有更具體的需求ements,可能有一個服務可以做到你想要的:https://github.com/gitlabhq/gitlabhq/tree/d7c50b4a95b5530ae0e2f5249cfd9a419dd940c6/app/models/project_services,但是我會留下一個更具體的問題。

+0

Gitlab_CI不錯,我會試一次。 – niren 2014-11-03 20:30:30

+0

將[ansible](http://www.ansible.com/application-deployment)用於我的自動部署? – niren 2014-11-05 07:21:33

+0

@niren我從來沒有碰過任何人,所以我不知道=( – 2014-11-05 08:20:11