簡體   English   中英

使用git鈎子在多個服務器上自動部署php

[英]Automating php deployment on multiple servers with git hooks

最近,我們開始探索GIT的目標是讓我們的開發人員能夠在任何地方工作,其次是自動化整個部署過程。

我們有一個中央測試服務器,我們托管所有應用程序/站點以進行測試和/或演示目的,一旦開發和測試完成,我們將應用程序移動到各自的實時服務器。

無論我使用GIT設置了什么,如下所示
1.在測試服務器上創建一個裸倉庫
2.為每個參與的開發人員獲取本地克隆,開發人員將推送到遠程(測試服務器)dev分支
3.有人會將所有更改從dev分支合並到master分支並將其推送到遠程
4.測試服務器(裸倉庫)有一個post-receive鈎子,它將master分支檢出到public_html文件夾(使用GIT_WORKING_DIR和checkout -f)。

截至目前,一切運行良好,我能夠在托管頁面上的主分支上看到合並(當然,在測試服務器上)。 現在我的問題是......
我這樣做對嗎?
2.我想我已經設置了post-receive hook,也可以在push to dev分支上執行。 怎么避免這個?
3.我如何將這些內容發送到我的實時服務器? 由於我有一些具有大量代碼庫的項目,檢查測試服務器上的所有內容然后將其發送到現場看起來不夠好。

我聽說過CI服務器,但據我所知,他們在本地檢查並使用'rsync'上傳所有內容 (不知道它是同步更改還是上傳所有內容)或此類工具。 如果出現任何問題,我只是想避免一切都出現並保持打開回滾的選項。 我很擅長在實時服務器上設置git。

  1. 是。 您可以在“ 重置git push ”中查看其他注意事項。
  2. 您可以在接收提交時測試分支的名稱。
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)另請參閱“ 編寫git post-receive hook來處理特定分支
  3. 通常建議對實時服務器使用rsync(不需要git):它只會更新已更改的內容。
    如果您在實時服務器上有git,那么“ Git for Websites / post-receive / Separation of Test and Production Sites ”中描述了各種方法。

關於部署,如“ 部署rsync(或svn,git,cvs)並忽略部署期間的不一致狀態? ”,在一個單獨的目錄中部署(甚至所有內容)並將prod實例符號鏈接到該目錄是一種很好的避免方法部署期間的不一致,以及在出現問題時便於回滾(符號鏈接回到上一個實時目錄)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM