मैं सॉफ़्टवेयर का एक टुकड़ा ढूंढ रहा हूं जिसे मुझे उम्मीद है कि किसी ने बनाया है। मैं इस सॉफ्टवेयर का वर्णन करने जा रहा हूं कि यह उम्मीद कर रहा है कि किसी ने इस तरह कुछ सुना है और मुझे सही दिशा में इंगित कर सकता है।गिट प्रॉक्सी जो कई रिमोट्स को धक्का देता है
मैं एक वेब ऐप विकसित कर रहा हूं जो हरोकू पर तैनात है। हेरोोकू की सीमाओं के कारण, मुझे एक ही रिपो के लिए चार (4) रिमोट गिट रेपो रखने की दुर्भाग्यपूर्ण स्थिति में रखा जा रहा है।
क्यों चार?
हमारे पास हेरोकू पर कई "ऐप्स" हैं। उत्पादन के लिए एक और कुछ "स्टेज" स्टेजिंग। ये सभी एक ही वास्तविक ऐप के लिए हैं, लेकिन हेरोकू पर वे अलग-अलग "ऐप्स" हैं, इसलिए हम उन्हें उत्पादन में धक्का देने से पहले स्टेजिंग पर चीजों को आजमा सकते हैं।
हरोकू पर प्रत्येक ऐप को अपना अलग गिट रेपो मिलता है, और master
शाखा में हर बार एक नई प्रतिबद्धता को धक्का दिया जाता है, और master
शाखा को स्वचालित रूप से तैनात करता है। हेरोोकू की यह नीति हमारी समस्या का क्रूक्स है। क्योंकि इसका मतलब है कि हमारे पास हेरोकू, और हमारे गिटहब रेपो पर 3 अलग-अलग प्रतिनिधि हैं।
4 अलग-अलग गिट रिमोट्स में समस्या क्यों है? क्योंकि इसका मतलब है कि जब आप नई प्रतिबद्धताओं को विकसित और बनाते हैं, तो आपको या तो (1) केवल एक रिमोट को धक्का देना पड़ता है या (2) सभी रिमोट्स को धक्का देता है।
करना (1) का मतलब है कि आप किस रिमोट को धक्का देना चाहते हैं। मुझे इस बारे में सोचना नफरत है। जब मैं विकसित करता हूं, मुझे रिमोट्स की परवाह नहीं है, मैं प्रतिबद्ध हूं और धक्का देता हूं और काम पर वापस आ जाता हूं। अगर मैं सर्वर 1 को स्टेजिंग में एक शाखा तैनात करना चाहता हूं, उदाहरण के लिए, मैं उस शाखा को staging_1
शाखा में विलय कर दूंगा और इसे दबा दूंगा। मुझे चुनना पसंद नहीं है कि किस रिमोट को धक्का देना है।
(1) का एक और नुकसान यह है कि आपके रिमोट सिंक से बाहर हो जाते हैं।
जो मैं चाहता हूं (2) है। मैं अपने सभी चार repos को धक्का देने के लिए हर धक्का कार्रवाई चाहते हैं।
लेकिन वहाँ उस के साथ 2 समस्याएं हैं:
समस्या 1: Heroku पर मचान "एप्स" को तैनात क्या master
पर है। मैं नहीं चाहता कि वे ऐसा करें। मैं स्टेजिंग सर्वर गिट रेपो पर master
शाखा में अपने रेपो में staging_1
शाखा को मैप करना चाहता हूं।
समस्या 2: मेरे कंप्यूटर को सभी 4 रिपोज़ पर धक्का देने से लंबा समय लगेगा। यहां तक कि 1 हेरोकू पुश कार्रवाई भी एक लंबा समय लगता है। कभी-कभी 40 सेकंड लग सकते हैं।
प्रस्तावित समाधान
यहाँ मैं यही चाहता हूँ। मैं एक विशेष गिट सर्वर चाहता हूं जो प्रॉक्सी के रूप में कार्य करता है। जब भी मैं अपने स्थानीय कंप्यूटर से इस गिट सर्वर में धक्का देता हूं, तो यह समान शाखाओं को हमारे 4 रेपो में समांतर में धक्का देगा। इस तरह, मेरे स्थानीय कंप्यूटर के परिप्रेक्ष्य से, पुश तात्कालिक प्रतीत होता है, जबकि यह प्रॉक्सी सर्वर स्वचालित रूप से पृष्ठभूमि में हेरोोकू रिपोज़ से निपटता है।
यदि किसी भी 4 रिमोट्स को धक्का किसी भी कारण से विफल रहता है, तो मैं चाहता हूं कि यह प्रॉक्सी किसी तरह से रिपोर्ट करे, इसलिए मुझे पता चलेगा कि कुछ टूटा हुआ है और इसे ठीक कर सकता है।
इस प्रॉक्सी को एक और चीज करना होगा master
मैपिंग।हर बार जब मैं staging_1
शाखा को धक्का दूंगा, तो यह सभी रिमोट्स पर staging_1
के रूप में इसे धक्का देगी, लेकिन स्टेजिंग सर्वर से संबंधित रिमोट तक यह उस शाखा को master
के रूप में भी धक्का देगी, इसलिए हेरोोकू इसे तैनात करने के बारे में जानेंगे।
(यह बहुत दुख की बात है कि Heroku एक तरह से मुझे इस तरह एक प्रॉक्सी की जरूरत है कि में बनाया गया है, लेकिन वह क्या मैं से निपटने के लिए है।)
तो हो गया। यही वह समाधान है जो मैं चाहता हूं। क्या किसी को ऐसे कार्यक्रम के बारे में पता है?
समस्या 1 द्वारा हल किया गया है: 'गिट पुश स्टेजिंग स्टेजिंग_1: मास्टर' - यानी अपनी स्थानीय स्टेजिंग_1 शाखा को स्टेजिंग रिमोट के मास्टर में धक्का देना। –
और आप https://github.com/fastestforward/heroku_san एक तैनाती स्क्रिप्ट के साथ मदद करेंगे जो आपके लिए यह कर सकता है लेकिन फिर भी 4 प्रतिनिधि को धीमा कर देगा। –