मैं वर्तमान में हमारे कार्यालय में एक बिल्ड सर्वर स्थापित कर रहा हूं और मैं सोच रहा था कि इसके लिए सबसे अच्छा अभ्यास क्या है। मुझे पता है कि प्रत्येक परिस्थिति एक अलग दृष्टिकोण के लिए पूछती है और एक ही लक्ष्य को प्राप्त करने के लाखों तरीके हैं, लेकिन चूंकि मैं जेनकिन्स के लिए नवागंतुक हूं और सामान्य रूप से बिल्ड सर्वर की अवधारणा हूं, इसलिए मैं सोच रहा था कि क्या मैं यह सही कर रहा हूं '।ग्रैंट के साथ निर्माण और कैपिस्ट्रानो के साथ तैनाती के साथ जेनकींस सर्वोत्तम प्रथाएं क्या हैं?
हमारी कंपनी वर्डप्रेस या Magento जैसे विभिन्न प्लेटफार्मों के साथ विभिन्न ग्राहकों के लिए वेबसाइट बनाने पर केंद्रित है। अब मेरे पास निम्न सेटअप है:
हम गिट में मास्टर या स्टेजिंग-शाखा में हमारे परिवर्तनों को धक्का देते हैं। जेनकींस चुनाव इन शाखाओं और करता है निम्नलिखित जब एक परिवर्तन का पता चला है:
- (इस उदाहरण में
master
) Git से भंडार - चेकआउट एक शाखा कहा जाता खींचो पुनः निर्धारित
build-master
origin/master
- को यह शाखा
npm install
यदिpackage.json
पाया गया है। - यदि
Gruntfile.js
पाया गया है तोgrunt build
है। - परिवर्तन प्रतिबद्धता है और इसे वापस
origin/build-master
को धक्का (यहाँ PHPUnit या casperJS परीक्षण जैसे अन्य सामान के लिए कमरा है।) - कैपिस्ट्रानो रिमोट सर्वर पर तैनाती को संभालने के लिए
cap build-master deploy
निष्पादित करता है।
अब मैं सोच रहा था कि यह एक बिल्ड सर्वर का उपयोग करने का 'सही' तरीका है या नहीं। मैं कुछ तार्किक समस्याओं में भाग लेता हूं। पसंद:
उदाहरण के लिए विक्रेता-सॉफ्टवेयर। जब मेरे पास बॉवर के साथ विभिन्न जेएस लाइब्रेरी हैं उदाहरण के लिए (जो गिट-अनदेखा js/vendor
-फ़ोल्डर में स्थित हैं), तो मैं उन्हें एक छोटा जेएस फ़ाइल में जोड़ और जोड़ सकता हूं ताकि वे build-master
-रिपोजिटरी (कैपिस्ट्रानो के लिए) में प्रतिबद्ध हो जाएं। लेकिन जब मेरे पास PHP-पुस्तकालय हैं (उदाहरण के लिए संगीतकार के साथ) मुझे यकीन नहीं है कि इससे कैसे निपटें। ये एक गिट-अनदेखा php/vendor
-फ़ोल्डर में स्थित हैं, लेकिन उन्हें build-master
-branch में शामिल करने की आवश्यकता है ताकि लाइव-सर्वर पर तैनात किया जा सके। वर्तमान में मैं .gitignore.build
को अपने भंडार में जोड़ कर ऐसा कर रहा हूं, जिसमें php/vendor
-फ़ोल्डर शामिल है, और origin/build-master
पर जाने और धक्का देने से पहले मौजूदा .gitignore
को ओवरराइट करें।
और/या:
संकलित फ़ाइलें। जब मैं कुछ फाइलों को शामिल नहीं करना चाहता (जैसे कि एसएसएस से जेनरेट की गई सीएसएस-फाइलें), मैंने इन्हें .gitignore
में रखा है। लेकिन फिर, जब कैपिस्ट्रानो इसे तैनात करने जा रहा है, तो मैं संकलित, समेकित और छोटा सीएसएस फ़ाइल को अपने भंडार में रखना चाहता हूं, अन्यथा यह मेरे उत्पादन सर्वर पर नहीं लगाया जाता है।
क्या कोई मुझे बता सकता है कि क्या मैं इसे बनाना चाहिए और तैनात कर रहा हूं? या क्या मैं इसे यहां पूरी तरह से जटिल कर रहा हूं? मुझे वास्तव में दिलचस्पी है कि इस के साथ अधिक अनुभव वाले लोग जेनकिंस, ग्रंट, बोवर, संगीतकार, कैपिस्ट्रानो आदि का उपयोग अपनी निर्माण प्रक्रिया में कर रहे हैं।
एक चीज जिसे मैंने आश्चर्यचकित किया है वह द्विआधारी है। चूंकि आप ऐसा करते हैं, मुझे आश्चर्य है कि क्या आप यह सुनिश्चित करने के लिए काम करते हैं कि एक देव का चेकआउट द्विआधारी के बिना पतला रहता है? – AnneTheAgile