अपने विकास और परिनियोजन प्रक्रियाओं को सरल बनाने की कोशिश कर रही कंपनियों के लिए सॉफ्टवेयर विकास की दुनिया में 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_hooks_tut
बनाएं, और उसके अंदर एक नया git रिपॉजिटरी प्रारंभ करें।
~/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
अंत में, commit-msg
स्क्रिप्ट को निष्पादन योग्य बनाएं। गैर-निष्पादन योग्य स्क्रिप्ट को git द्वारा छोड़ दिया जाता है, भले ही वे हुक निर्देशिका में मौजूद हों।
~/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 को एकीकृत करना चाहते हैं।
यहां तक पहुंचने के लिए बधाई! मुझे आशा है कि आपने आज कुछ नया सीखा होगा।