我正在尋找一個我希望有人構建的軟件。我要在這裏描述這個軟件,希望有人聽說過這樣的事情,並可以指出我正確的方向。推送到多個遠程的Git代理
我正在開發部署在Heroku上的Web應用程序。由於Heroku的侷限性,我處於四次(4)遠程Git回購相同回購的不幸情況。
爲什麼四個?
我們在Heroku上有多個「應用程序」。一個用於製作和幾個舞臺「應用程序」。這些都是針對相同的實際應用程序,但在Heroku中它們是獨立的「應用程序」,所以我們可以在將它們投入生產之前嘗試進行分級。
Heroku上的每個應用程序都獲得自己的獨立Git回購,並且每次將新提交推送到master
分支時自動部署master
分支。 Heroku的這個政策是我們問題的關鍵。因爲這意味着我們在Heroku上有3個不同的回購站,加上我們的GitHub回購站。
爲什麼它有4個不同的Git遙控器的問題?因爲這意味着當您開發並創建新的提交時,您必須(1)只推送一個遠程或(2)推送到所有遠程。
做(1)意味着想要推向哪個遙控器。我討厭這樣想。當我發展時,我不關心遙控器,我承諾並推動並重新開始工作。例如,如果我想將分支部署到分段服務器1中,我會將該分支合併到staging_1
分支中並推送它。我不喜歡選擇推送到哪個遙控器。 (1)的另一個缺點是您的遙控器不同步。
我想要的是(2)。我希望每一個推動行動都能推動我們所有的四個回購。
但也有2個問題與:
問題1:在Heroku分期「應用程序」部署什麼在master
。我不希望他們這樣做。我想將我的repo中的staging_1
分支映射到登臺服務器Git repo上的master
分支。
問題2:讓我的電腦推送到所有4個回購將花費長時間。即使1個Heroku推動動作也需要很長時間。有時可能需要40秒。
提出的解決方案
這是我想要的。我想擁有一個充當代理的專用Git服務器。每當我從本地計算機推送到此Git服務器時,它會將這些相同分支並行推入我們的4個倉庫並行。這樣,從我的本地計算機的角度來看,推送似乎是即時的,而此代理服務器將自動在後臺處理Heroku回購站。
如果推到任何4個遙控器的任何原因而失敗,我想這個代理報到某種方式,所以我會知道的東西壞了,可以修復它。
另一件事,這個代理必須做的是master
映射。每當我將staging_1
分支推送到它時,它會將其作爲staging_1
推送到所有遙控器,但是對於屬於登臺服務器的遙控器,它也會將該分支推送爲master
,因此Heroku將知道部署它。
(這是很可悲的,Heroku的設計的方式,讓我需要一個像這樣的代理,但是這就是我要處理的。)
所以這是它。這是我想要的解決方案。有人知道這樣的程序嗎?
問題1通過'git push staging staging_1:master'解決 - 即將本地staging_1分支推送到分級遠程主機。 – 2012-04-25 11:25:50
你可能會發現https://github.com/fastestforward/heroku_san會幫助你做一個可以爲你做的部署腳本,但仍然會緩慢部署到4個版本。 – 2012-04-25 11:30:07