Manticore Search जैसे C++ प्रोजेक्ट में योगदान करना भाषा के निम्न-स्तरीय स्वभाव के कारण एक कठिन कार्य हो सकता है, जो अक्सर घटकों के विशिष्ट संस्करणों और प्रणाली की आंतरिक कार्यप्रणाली की अच्छी तरह से समझ की आवश्यकता होती है। हालाँकि, Manticore टीम ने विशेष डॉकर छवियों के उपयोग के माध्यम से इस प्रक्रिया को काफी अधिक सुलभ बना दिया है। ये छवियाँ सभी आवश्यक निर्भरताएँ और कॉन्फ़िगरेशन शामिल करने के लिए सावधानीपूर्वक तैयार की गई हैं, जिससे योगदानकर्ताओं को उनके योगदान पर ध्यान केंद्रित करने की अनुमति मिलती है बिना आधारभूत सेटअप के बारे में चिंता करने के।
Manticore Search में योगदान देना दो शक्तिशाली तरीकों के माध्यम से सरल किया जा सकता है:
- मैनुअल निर्माण और परीक्षण के लिए Docker का लाभ उठाना
- और स्वचालित प्रक्रियाओं के लिए GitHub का उपयोग करना।
यह गाइड विकास चक्र के विभिन्न स्तरों पर योगदानकर्ताओं के लिए दोनों विधियों का परिचय देती है।
आपके फोर्क में CI
Manticore Search में योगदान करने का एक सुलभ तरीका GitHub पर प्रोजेक्ट को फोर्क करना और प्रोजेक्ट के भीतर कॉन्फ़िगर की गई निरंतर एकीकरण (CI) प्रणाली को सक्षम करना है। यह दृष्टिकोण योगदानकर्ताओं को स्थानीय विकास वातावरण सेटअप करने की आवश्यकता के बिना आसानी से अपने परिवर्तनों का परीक्षण करने की अनुमति देता है। विशेष CI रनर की आवश्यकता नहीं है; परीक्षण उद्देश्यों के लिए कोड का संकलन और सभी समर्थित ऑपरेटिंग सिस्टम के लिए पैकेज का निर्माण GitHub के रनरों द्वारा संभाला जाता है। इस प्रकार, आप अपने फोर्क में पूरे CI प्रक्रिया को आसानी से दोहरा सकते हैं, केवल एकमात्र अपवाद पैकेज को https://repo.manticoresearch.com/ पर प्रकाशित करना है।
GitHub के साथ शुरू करना
- Manticore Search GitHub रिपोजिटरी को फोर्क करें ताकि एक व्यक्तिगत प्रति बनाई जा सके।
- अपने फोर्क को अपने स्थानीय मशीन पर क्लोन करें:
git clone https://github.com/<your-username>/manticoresearch
कमांड का उपयोग करके। - अपने फोर्क पर रिपोजिटरी सेटिंग्स के माध्यम से निरंतर एकीकरण (CI) सक्षम करें।
- अपने परिवर्तनों को अपने GitHub रिपोजिटरी पर पुश करें। CI स्वचालित रूप से आपके कोड को संकलित और परीक्षण करेगा, जो सीधे आपके रिपोजिटरी में फीडबैक प्रदान करेगा।
- मूल (अपस्ट्रीम) रिपोजिटरी के लिए एक पुल अनुरोध बनाएँ, अनुरोध करते हुए कि आपके परिवर्तनों को मर्ज किया जाए।
यह GitHub-केंद्रित दृष्टिकोण प्रारंभिक सेटअप को सरल बनाता है, जिससे योगदानकर्ता विकास पर ध्यान केंद्रित कर सकते हैं न कि वातावरण कॉन्फ़िगरेशन पर।
Docker के साथ मैनुअल निर्माण और परीक्षण करना
उन लोगों के लिए जो हाथों-हाथ दृष्टिकोण पसंद करते हैं या निर्माण और परीक्षण पर्यावरण पर अधिक नियंत्रण की आवश्यकता होती है, जैसे कि विशिष्ट परीक्षण को दोबारा बनाना, एक वैकल्पिक समाधान है। इसमें Manticore Search को संकलित और परीक्षण करने के लिए CI प्रणाली द्वारा प्रयोग की जाने वाली समान Docker छवियों का मैनुअल उपयोग करना शामिल है।
Docker के साथ Manticore Search संकलित करें
Manticore Search को संकलित करने के लिए, अपने क्लोन के रूट फ़ोल्डर में निम्नलिखित Docker कमांड का उपयोग करें:
docker run -it --rm -e SYSROOT_URL=https://repo.manticoresearch.com/repository/sysroots \
-e arch=x86_64 \
-e DISTR=jammy \
-e boost=boost_nov22 \
-e sysroot=roots_nov22 \
-e CTEST_CONFIGURATION_TYPE=Debug \
-e NO_TESTS=1 \
-e CACHEB="../cache" \
-v $(pwd):/in/ \
manticoresearch/external_toolchain:clang16_cmake3263 bash
नोट करें, आपको इसे https://github.com/manticoresoftware/manticoresearch से क्लोन के रूट फ़ोल्डर में करना होगा।
इस कमांड को चलाने के बाद, आप कंटेनर के अंदर होंगे। कोड संकलित करने के लिए निम्नलिखित कदम उठाएं:
- माउंट किए गए डायरेक्टरी में जाएँ:
cd /in/
- एक निर्माण निर्देशिका बनाएँ और संकलन प्रक्रिया शुरू करें:
mkdir build ctest -VV -S misc/ctest/gltest.cmake --no-compress-output
ctest -VV
कमांड एक विस्तृत परीक्षण मोड को शुरू करता है, जो निर्माण प्रक्रिया के बारे में विस्तृत आउटपुट प्रदान करता है।
Manticore Search का परीक्षण
संकलन के बाद, आप एक अन्य Docker कमांड के साथ Manticore Search का परीक्षण कर सकते हैं:
docker run --rm -it \
-e DIAGNOSTIC=1 \
-e NO_BUILD=1 \
-e WITH_COVERAGE=0 \
-e CACHEB="../cache" \
--name test \
-v $(pwd):/in/ \
manticoresearch/ubertests_ctest:3263_mar_2024 bash
कंटेनर के अंदर, परीक्षण शुरू करने के लिए निम्नलिखित कमांड चलाएँ:
- माउंट किए गए डायरेक्टरी में जाएँ:
cd /in/
- पिछले संकलन से बचा हुआ cmake कैश हटा दें:
rm build/CMakeCache.txt
- सामान्य परीक्षण सूट चलाएँ:वैकल्पिक रूप से, आप विशेष परीक्षणों को चलाने के लिए
ctest -V -S misc/ctest/gltest.cmake --no-compress-output
CTEST_REGEX
पैरामीटर शामिल कर सकते हैं:CTEST_REGEX=202 ctest -VV -S misc/ctest/gltest.cmake --no-compress-output
Ubertests चलाना
विशिष्ट परीक्षण चलाने का एक अन्य तरीका ubertest.php
स्क्रिप्ट का सीधे उपयोग करना है (ऊपर दिया गया ctest
कमांड भी इसे आंतरिक रूप से निष्पादित करता है):
- परीक्षण निर्देशिका में जाएँ:
cd /in/test/
- विशिष्ट परीक्षणों के लिए ubertest स्क्रिप्ट चलाएँ:
php ubertest.php -s /in/build/src/searchd -i /in/build/src/indexer t 202 # या कई परीक्षणों के लिए php ubertest.php -s /in/build/src/searchd -i /in/build/src/indexer t 201 202
निष्कर्ष
GitHub और Docker दोनों तरीके Manticore Search में योगदान करने के लिए विशिष्ट लाभ प्रदान करते हैं। Manticore में विशेष Docker छवियों के परिचय ने C++ परियोजनाओं में योगदान से संबंधित जटिलता को काफी हद तक कम कर दिया है, जिससे डेवलपर्स को अपने योगदानों पर अधिक ध्यान केंद्रित करने और वातावरण सेटअप पर कम चिंता करने की अनुमति मिलती है। चाहे आप GitHub की सरलता और स्वचालन को पसंद करें या Docker दृष्टिकोण में विस्तृत नियंत्रण, ये कार्यप्रणालियाँ आपके योगदानों के विकास और परीक्षण को सक्षम करती हैं।