Git-прокси, который отправляет данные на несколько удаленных устройств

Я ищу часть программного обеспечения, которое, я надеюсь, кто-нибудь создал. Я собираюсь описать это программное обеспечение здесь, надеясь, что кто-то слышал о чем-то подобном и может указать мне правильное направление.

Я разрабатываю веб-приложение, развернутое на Heroku. Из-за ограничений Heroku я оказался в неприятной ситуации, когда у меня есть четыре (4 )удаленных репозитория Git для одних и тех же репозиториев.

Почему четыре?

У нас есть несколько «приложений» на Heroku. Один для производства и пара промежуточных «приложений». Все они предназначены для одного и того же фактического приложения, но на Heroku они являются отдельными «приложениями», поэтому мы могли бы попробовать что-то на стадии подготовки, прежде чем запускать их в производство.

Каждое приложение на Heroku получает отдельный репозиторий Git и автоматически развертывает ветку masterкаждый раз, когда в эту ветку masterдобавляется новая фиксация. Эта политика Heroku является сутью нашей проблемы. Потому что это означает, что у нас есть 3 разных репозитория на Heroku, а также наш репозиторий на GitHub.

В чем проблема с 4 разными пультами Git?Потому что это означает, что когда вы разрабатываете и создаете новые коммиты, вы должны либо (1 )отправить только на один удаленный компьютер, либо (2 )отправить на все удаленные компьютеры.

Выполнение (1 )означает обдумывание того, на какой пульт вы хотели бы нажать. Я ненавижу думать об этом. Когда я разрабатываю, я не забочусь о пультах, я фиксирую, нажимаю и возвращаюсь к работе. Например, если я хочу развернуть ветку на промежуточном сервере 1, я бы объединил эту ветку с веткой staging_1и отправил ее. Я не люблю выбирать, на какой пульт нажать.

Еще один недостаток (1 )заключается в том, что ваши пульты не синхронизируются.

Мне нужно (2 ). Я хочу, чтобы каждое действие push отправлялось во все наши четыре репозитория.

Но с этим есть 2 проблемы:

Проблема 1 :Промежуточные «приложения» на Heroku развертывают то, что находится master. Я не хочу, чтобы они это делали. Я хочу сопоставить ветку staging_1в моем репозитории с веткой masterна промежуточном сервере репозитория Git.

Проблема 2 :Если мой компьютер отправит данные во все 4 репозитория, это займет долгое время. Даже 1 push-действие Heroku занимает много времени. Иногда это может занять 40 секунд.


Предлагаемое решение

Вот что я хочу. Я хочу иметь специализированный сервер Git, который действует как прокси. Всякий раз, когда я нажимаю с моего локального компьютера на этот Git-сервер, он будет параллельно нажимать те же самые ветки в наши 4 репозитория . Таким образом, с точки зрения моего локального компьютера, отправка будет казаться мгновенной, в то время как этот прокси-сервер будет автоматически обрабатывать репозитории Heroku в фоновом режиме.

Если отправка данных на любой из 4 удаленных серверов по какой-либо причине не удалась, я хочу, чтобы этот прокси каким-то образом сообщал об этом, чтобы я знал, что что-то не работает, и мог это исправить.

Еще одна вещь, которую должен будет сделать этот прокси, это отображение master. Каждый раз, когда я буду нажимать на него ветку staging_1, он будет нажимать ее как staging_1на все удаленные устройства, но на удаленный сервер, принадлежащий промежуточному серверу, он также будет нажимать эту ветку как master,поэтому Heroku будет знать, как его развернуть.

(Довольно печально, что Heroku разработан таким образом, что мне нужен такой прокси, но это то, с чем мне приходится иметь дело.)

Вот и все. Это решение, которое я хочу. Кто-нибудь знает такую ​​программу?

6
задан Ram Rachum 25 April 2012 в 11:12
поделиться