我想部署一個PHP網站使用Capistrano。該網站由4個組件(前端代碼和3個Web服務)組成,每個組件都存儲在它自己的git存儲庫中。我想將所有4個組件部署到一個樹形結構中(見下文),因此網站版本之間的切換將與移動「當前」鏈接一樣簡單。將多個應用程序部署到與Capistrano和Git的單一樹
我看到,默認情況下,Capistrano部署旨在部署單個存儲庫。如果我理解正確,即使使用諸如Caphub之類的東西也不會對我有所幫助,因爲4個組件將部署到4個不同的樹中,使得回滾到特定時間點成爲一個繁瑣的過程。
有沒有辦法使用Capistrano獲得下面的配置?這種情況的最佳做法是什麼?
root/
| current/
| releases/
| | <timestamp/>
| | | frontend/
| | | webservice-1/
| | | webservice-2/
| | | webservice-3/
| | <timestamp/>
| | | frontend/
| | | webservice-1/
| | | webservice-2/
| | | webservice-3/
| shared/
更新:
彼時使用子模塊的解決方案,如接受的答案建議。我創建了一個擁有4個子模塊和一個網站部署庫的網站倉庫,我保留了capistrano部署文件。我寫了一個簡單的shell腳本來爲我節省每次部署時更新子模塊的麻煩(一個非常繁瑣的過程!)。部署我運行腳本(源代碼下面),然後運行「帽部署」。
#!/bin/sh
git clone gitserver:path_to_git_repositories/website.git cloned
cd cloned
git submodule init
git submodule update
git submodule foreach git pull origin master # updating all modules to the current code in the master branch
git submodule foreach git add .
git commit -a -m "Updating submodules"
git push origin master
cd ..
rm -rf cloned
有一種新的方法。請參閱此答案http://stackoverflow.com/a/40921589/2067375。 (免責聲明:我是寶石的擁有者) – 2016-12-01 22:38:47