Deployment
Git遠端到遠端
我試圖弄清楚如何使用 git 來部署站點。
理論上有3種聯繫:
- **$$ local machine $$**我的本地編碼機器
- **$$ gitolite server $$**使用 Gitolite 的私人倉庫託管
- **$$ web server $$**帶有複製的 VPS 託管 –bare
我
git push
的程式碼來自**$$ local machine $$到$$ gitolite server $$但是我如何從$$ gitolite $$對我$$ web server $$**我想自動化這個,所以我所要做的就是完成一個
git push
.是設置掛鉤的最佳方式**$$ gitolate server $$回購執行
post-update
或post-receive
腳本?但既然它是一個--bare
回購,這是否意味著我需要git push
從$$ gitolite server $$到$$ web server $$**的複製回購,因為我無法執行,git pull
因為--bare
回購沒有工作樹?抱歉,提前感謝
西部數據
一種解決方案是:
- 在 gitolite 伺服器上放置一個接收後掛鉤以自動推送到 Web 伺服器
- 在 web 伺服器上放置一個 post-receive 掛鉤來部署程式碼(我通常為此使用 git archive)
然後你推送到 gitolite,它推送到 web 伺服器,然後部署你的新程式碼。完畢!
或者,您可以將 Web 伺服器上的 git repo 排除在外,並讓 gitolite post-receive 掛鉤執行以下操作:
git archive --format=tar master | (ssh -i $KEYFILE user@webserver tar -x -C /dest/dir )
這將直接從 gitolite 掛鉤進行部署。這假設您可以作為在 $KEYFILE 中擁有私有 ssh 密鑰的“使用者”通過 ssh 進入網路伺服器,這可能會產生一些安全後果,因為任何可以讀取 gitolite 鉤子的人都可以獲取這些值。