अपने विकास और परिनियोजन प्रक्रियाओं को सरल बनाने की कोशिश कर रही कंपनियों के लिए सॉफ्टवेयर विकास की दुनिया में DevOps एक अभिन्न घटक बन गया है। उपलब्ध कई DevOps प्रौद्योगिकियों में से एक ऐसी है जिसे कभी-कभी उपेक्षित कर दिया जाता है फिर भी यह वास्तव में प्रभावी है। वह महत्वपूर्ण तकनीक कोई और नहीं बल्कि " ” है। गिट हुक्स" Git Hooks कार्यों को स्वचालित करने, कोडिंग मानकों को लागू करने, निरंतर तैनाती करने और परीक्षण चलाने के लिए बेहतरीन उपकरण हैं। आइए देखें कि हम अपनी DevOps प्रथाओं में क्रांति लाने के लिए Git Hooks का उपयोग कैसे कर सकते हैं! सबसे पहले चीज़ें... हुक क्या हैं? आइए पहले आधिकारिक परिभाषा देखें - हुक ऐसे प्रोग्राम हैं जिन्हें आप गिट के निष्पादन में कुछ बिंदुओं पर क्रियाओं को ट्रिगर करने के लिए हुक निर्देशिका में रख सकते हैं। सौभाग्य से, यह वास्तव में सरल परिभाषा है! आइए हम कुछ ऐसे प्रश्नों का समाधान करने का प्रयास करें जो पाठकों के पास परिभाषा के बारे में हो सकते हैं। प्र) हुक्स निर्देशिका क्या है? जहां यह स्थित है? हुक निर्देशिका Git रिपॉजिटरी में एक निर्देशिका है जिसमें निष्पादन योग्य प्रोग्राम या हुक होते हैं जिन्हें Git निष्पादित करेगा। डिफ़ॉल्ट रूप से, हुक निर्देशिका है। उपयोगकर्ता इसे कॉन्फ़िगरेशन वेरिएबल का उपयोग करके भी कॉन्फ़िगर कर सकते हैं। $GIT_DIR/hooks core.hooksPath प्र) Git के निष्पादन बिंदु क्या हैं? Git निष्पादन बिंदु Git वर्कफ़्लो के चरण हैं जिन पर हुक चलाए जा सकते हैं। प्री-कमिट, पोस्ट-कमिट, प्री-पुश, पोस्ट-रिसीव, प्री-रीबेस और पोस्ट-मर्ज Git निष्पादन बिंदुओं के कुछ उदाहरण हैं। इस अनुभाग को सारांशित करने के लिए, हम Git Hooks के लिए निम्नलिखित परिभाषा प्राप्त कर सकते हैं - Git कोड को कमिट करना, पुश करना या मर्ज करना जैसे विशेष ऑपरेशन से पहले या बाद में "हुक" के रूप में जानी जाने वाली स्क्रिप्ट निष्पादित करता है। आपके Git रिपॉजिटरी की निर्देशिका में संग्रहीत होते हैं वे आपको कार्यों को स्वचालित करने, नीतियों को लागू करने और विकास प्रक्रिया के दौरान कोडबेस के साथ बातचीत करने की अनुमति देते हैं। Git हुक .git/hooks हमारा पहला गिट हुक बनाना! आइए एक सीधा Git हुक बनाने का प्रयास करें जो किसी भी प्रतिबद्ध संदेश पर "TASK*" नियमित अभिव्यक्ति लगाएगा। एक नई निर्देशिका बनाएं, और उसके अंदर एक नया git रिपॉजिटरी प्रारंभ करें। git_hooks_tut ~/projects$ mkdir git_hooks_tut ~/projects$ cd git_hooks_tut ~/projects/git_hooks_tut$ git init Initialized empty Git repository आइए हम हुक्स निर्देशिका में जाएँ और इसकी सामग्री की जाँच करें। ~/projects/git_hooks_tut$ cd .git/hooks ~/projects/git_hooks_tut/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-push.sample commit-msg.sample pre-commit.sample pre-rebase.sample fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample post-update.sample prepare-commit-msg.sample update.sample हुक निर्देशिका कुछ नमूना स्क्रिप्ट के साथ आती है। एक्सटेंशन उन्हें डिफ़ॉल्ट रूप से चलने से रोकता है। हुक को "इंस्टॉल" करने के लिए आपको बस एक्सटेंशन से छुटकारा पाना है। .sample .sample या, यदि आप एक नई स्क्रिप्ट के साथ शुरुआत से शुरुआत कर रहे हैं, तो आप बस एक नाम के साथ एक नई फ़ाइल जोड़ सकते हैं जो ऊपर सूचीबद्ध फ़ाइल नामों में से एक से मेल खाता है, लेकिन एक्सटेंशन के बिना। .sample हमारे उपयोग के मामले में, हमें एक प्रतिबद्ध-संदेश हुक की आवश्यकता होगी। आगे बढ़ें और नामक एक नई स्क्रिप्ट बनाएं। commit-msg ~/projects/git_hooks_tut/.git/hooks$ touch commit-msg आइए हम अपने प्रतिबद्ध संदेश पैटर्न को स्क्रिप्ट में सुनिश्चित करने के लिए तर्क जोड़ें। commit-msg #!/bin/sh commit_msg_file=$1 commit_msg=$(cat "$commit_msg_file") # Check if the commit message starts with "TASK" if ! echo "$commit_msg" | grep -q "^TASK"; then echo "Commit message must start with 'TASK'" exit 1 fi अंत में, स्क्रिप्ट को निष्पादन योग्य बनाएं। गैर-निष्पादन योग्य स्क्रिप्ट को git द्वारा छोड़ दिया जाता है, भले ही वे हुक निर्देशिका में मौजूद हों। commit-msg ~/projects/git_hooks_tut/.git/hooks$ chmod +x commit-msg और उस सेटअप के साथ, हमारे हुक पूरे हो गए हैं! आइए अब इसका परीक्षण करें। अब हम एक नई फ़ाइल बनाएंगे और उसे प्रतिबद्ध करने का प्रयास करेंगे; पहले, एक अमान्य संदेश प्रारूप के साथ, और फिर एक वैध संदेश प्रारूप के साथ। ~/projects/git_hooks_tut/.git/hooks$ cd ../.. ~/projects/git_hooks_tut$ touch README ~/projects/git_hooks_tut$ ls README ~/projects/git_hooks_tut$ git add README ~/projects/git_hooks_tut$ git commit -m "Added Readme File" Commit message must start with 'TASK' ~/projects/git_hooks_tut$ git commit -m "TASK-0000: Added Readme File" [master (root-commit) 7f3648a] TASK-000: Added Readme File चीजें आदर्श रूप से काम कर रही हैं! कुछ विभिन्न प्रकार के हुक क्या उपलब्ध हैं? Git हमें कई निष्पादन बिंदुओं के लिए हुक बनाने की अनुमति देता है। इनमें से कुछ इस प्रकार हैं - यह हुक कमिट बनने से पहले निष्पादित होता है। यह हमें किए जा रहे परिवर्तनों को मान्य करने की अनुमति देता है। प्री-कमिट हुक: प्री-रिसीव हुक किसी भी संदर्भ को संशोधित करने से पहले रिमोट रिपॉजिटरी पर चलाया जाता है, जिससे आप कस्टम नियम या नीतियां लागू कर सकते हैं। प्री-रिसीव हुक: इस हुक को संदर्भों के अद्यतनीकरण के बाद रिमोट रिपॉजिटरी पर भी निष्पादित किया जाता है। इसका उपयोग सूचनाएं भेजने और/या अतिरिक्त कार्य करने के लिए किया जा सकता है। पोस्ट-रिसीव हुक: इस हुक को पुश करने से पहले निष्पादित किया जाता है। इसका उपयोग कुछ ऐसी नीतियों को लागू करने के लिए किया जा सकता है जो कुछ प्रकार की प्रतिबद्धताओं को आगे बढ़ाने को हतोत्साहित करती हैं। प्री-पुश हुक: कमिट संदेश बनने के बाद तैयार-कमिट-संदेश हुक निष्पादित होता है, जो आपको कमिट संदेश को संशोधित करने या बढ़ाने की अनुमति देता है। प्रिपेयर-कमिट-संदेश हुक: Git को बेहतर ढंग से अनुकूलित करने के लिए कई अन्य हुक मौजूद हैं, उन्हें पर पाया जा सकता है। Git डॉक्स Git हुक, अगर ठीक से उपयोग किया जाए, तो बड़ी संभावनाओं वाला उपकरण है! हम, डेवलपर, अक्सर ऐसे टूल की ताकत को कमज़ोर कर देते हैं जो कई जटिल कार्यों को हल कर सकते हैं। Git Hooks का उपयोग किसी भी स्तर पर DevOps को बढ़ाता है, यह उन संगठनों के लिए एक शानदार तरीका हो सकता है जो अपने विकास चक्रों में DevOps को एकीकृत करना चाहते हैं। यहां तक पहुंचने के लिए बधाई! मुझे आशा है कि आपने आज कुछ नया सीखा होगा।