मोनोरेपो के लिए CI/CD
मोनोरेपो में CI/CD पाइपलाइन को अनुकूलित करने की रणनीतियाँ जानिए, जिनमें बदली हुई फ़ाइलों के आधार पर चुनिंदा कार्य चलाना शामिल है।
मोनोरेपो के लिए CI/CD, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मोनोरेपो क्या है?
मोनोरेपो एक ऐसी एकल रिपॉज़िटरी है जिसमें कई प्रोजेक्ट या एप्लिकेशन का कोड रखा जाता है। प्रत्येक सेवा या लाइब्रेरी के लिए अलग-अलग रिपॉज़िटरी रखने के बजाय, सब कुछ एक ही जगह रहता है।
इसे ऐसे समझिए जैसे एक इमारत (रिपॉज़िटरी) में कई पुस्तकों (प्रोजेक्ट) वाला बड़ा पुस्तकालय हो, न कि हर पुस्तक के लिए अलग इमारत। इस तरीके के अपने लाभ और सीमाएँ हैं, विशेष रूप से CI/CD के लिए।
मोनोरेपो की CI/CD चुनौतियाँ
मोनोरेपो कोड साझा करना आसान बनाने जैसे लाभ देते हैं, लेकिन वे सतत एकीकरण/सतत परिनियोजन (CI/CD) पाइपलाइन के लिए चुनौतियाँ भी पैदा कर सकते हैं:
- धीमे बिल्ड: यदि हर बदलाव सभी प्रोजेक्ट के लिए पूरा बिल्ड और परीक्षणों का समूह शुरू कर देता है, तो पाइपलाइन बहुत धीमी हो जाती हैं।
- संसाधनों की बर्बादी: असंबंधित कार्यों को अनावश्यक रूप से चलाने से बिल्ड मिनट और संसाधन खर्च होते हैं।
- डेवलपर की निराशा: प्रतिक्रिया मिलने में लंबा समय लगने से विकास की गति धीमी हो सकती है।
चयनात्मक CI/CD की आवश्यकता
कुशल मोनोरेपो CI/CD की कुंजी चयनात्मकता है। हम चाहते हैं कि हमारी पाइपलाइन इतनी समझदार हों कि वे:
- पहचानें कि *क्या* बदला है।
- इन बदलावों से प्रभावित प्रोजेक्ट के लिए *केवल* CI/CD कार्य चलाएँ।
इस तरीके से समय बचता है, संसाधनों की खपत घटती है और डेवलपर को तेज़ प्रतिक्रिया मिलती है।
पथों के आधार पर शुरू करना: `on.paths`
GitHub Actions आपके कार्यप्रवाह ट्रिगर में paths फ़िल्टर का उपयोग करके चयनात्मकता प्राप्त करने का एक शक्तिशाली तरीका प्रदान करता है। आप ऐसी निर्देशिकाएँ या फ़ाइलें निर्दिष्ट कर सकते हैं जिनमें बदलाव होने पर कार्यप्रवाह शुरू होना चाहिए।
यदि इन पथों के बाहर किसी फ़ाइल में बदलाव होता है, तो कार्यप्रवाह नहीं चलेगा। यह मोनोरेपो के लिए बिल्कुल उपयुक्त है!
on:
push:
branches:
- main
paths:
- 'apps/frontend/**'
- 'libs/shared/**'कार्रवाई में पथ फ़िल्टर
यह एक सरल कार्यप्रवाह है, जो केवल तब चलता है जब apps/backend निर्देशिका की फ़ाइलों या किसी विशिष्ट README.md फ़ाइल में बदलाव पुश किए जाते हैं।
इससे यह सुनिश्चित होता है कि आपके बैकएंड सेवा के लिए केवल प्रासंगिक परीक्षण या बिल्ड ही शुरू हों।
name: Backend CI
on:
push:
branches:
- main
paths:
- 'apps/backend/**'
- 'README.md'
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build backend app
run: echo "Building backend..."पथों को अनदेखा करना: `paths-ignore`
कभी-कभी आप चाहते हैं कि अधिकांश बदलावों के लिए कार्यप्रवाह चले, लेकिन यदि केवल कुछ विशेष फ़ाइलों (जैसे, दस्तावेज़ या लॉग फ़ाइलों) में बदलाव हुआ हो, तो वह न चले। paths-ignore फ़िल्टर इसके लिए बिल्कुल उपयुक्त है।
यह paths की तरह ही काम करता है, लेकिन उन फ़ाइलों को निर्दिष्ट करता है जिनसे कार्यप्रवाह शुरू नहीं होना चाहिए।
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
- '**/*.md'`git diff` के साथ गतिशील चयनात्मक रन
अधिक जटिल तर्क के लिए, आप बदलावों की गतिशील रूप से जाँच करने हेतु अपने कार्यप्रवाह के चरणों में git diff जैसे Git कमांड का उपयोग कर सकते हैं। इससे आप कस्टम शर्तें बना सकते हैं।
उदाहरण के लिए, आप जाँच सकते हैं कि किसी विशिष्ट फ़ोल्डर में बदलाव हुए हैं या नहीं और यह तय करने के लिए एक आउटपुट वेरिएबल सेट कर सकते हैं कि बाद का कार्य चलना चाहिए या नहीं।
सशर्त कार्य निष्पादन का उदाहरण
यह कार्यप्रवाह चरण वर्तमान कमिट और आधार शाखा के बीच apps/api/ के अंतर्गत किसी फ़ाइल में बदलाव हुआ है या नहीं, यह देखने के लिए git diff का उपयोग करता है। यदि बदलाव हुआ है, तो यह आउटपुट वेरिएबल api_changed को 'true' पर सेट करता है।
इसके बाद यह आउटपुट यह नियंत्रित कर सकता है कि 'deploy API' कार्य चले या नहीं।
jobs:
check-changes:
runs-on: ubuntu-latest
outputs:
api_changed: ${{ steps.diff.outputs.api_changed }}
steps:
- uses: actions/checkout@v4
- name: Check API changes
id: diff
run: |
if git diff --quiet ${{ github.event.before }} ${{ github.sha }} -- apps/api/;
then
echo "api_changed=false" >> $GITHUB_OUTPUT
else
echo "api_changed=true" >> $GITHUB_OUTPUT
fi
deploy-api:
needs: check-changes
if: needs.check-changes.outputs.api_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Deploy API
run: echo "Deploying API..."CI/CD के लिए मोनोरेपो की संरचना
एक व्यवस्थित मोनोरेपो संरचना चयनात्मक CI/CD को बहुत सरल बना देती है। संबंधित फ़ाइलों और प्रोजेक्ट को सुव्यवस्थित निर्देशिकाओं में समूहित करने से paths फ़िल्टर का प्रभावी उपयोग करना आसान हो जाता है।
/apps/frontend/apps/backend/libs/shared/docs
स्पष्ट पृथक्करण से कार्यप्रवाहों को सटीक रूप से लक्षित किया जा सकता है।
मोनोरेपो CI/CD प्रश्नोत्तरी
डेवलपर की गति और संसाधनों के कुशल उपयोग को बनाए रखने के लिए मोनोरेपो के CI/CD को अनुकूलित करना अत्यंत महत्वपूर्ण है। विचार करें कि बड़े, एकीकृत कोडबेस की चुनौतियों का सबसे अच्छा समाधान कौन-सी रणनीतियाँ करती हैं।
पुनरावलोकन और अगले चरण
आपने चयनात्मक कार्य निष्पादन लागू करके मोनोरेपो में CI/CD चुनौतियों से निपटना सीखा है। GitHub Actions के paths फ़िल्टर और उन्नत git diff तकनीकों का उपयोग करके आप सुनिश्चित कर सकते हैं कि आपकी पाइपलाइन केवल आवश्यक कार्य ही चलाएँ।
इससे तेज़ प्रतिक्रिया, कम लागत और अधिक सहज विकास अनुभव मिलता है। और भी बेहतर दक्षता के लिए अपने कार्यप्रवाहों को बेहतर ढंग से समायोजित करने के तरीके तलाशते रहें!
एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 142
- पाठ
- 568
अक्सर पूछे जाने वाले प्रश्न
क्या “मोनोरेपो के लिए CI/CD” पाठ निःशुल्क है?
हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “मोनोरेपो के लिए CI/CD” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“मोनोरेपो के लिए CI/CD” में मैं क्या सीखूँगा?
मोनोरेपो में CI/CD पाइपलाइन को अनुकूलित करने की रणनीतियाँ जानिए, जिनमें बदली हुई फ़ाइलों के आधार पर चुनिंदा कार्य चलाना शामिल है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“मोनोरेपो के लिए CI/CD” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- मोनोरेपो के लिए CI/CD
- रिपॉज़िटरी-पार वर्कफ़्लो
- केंद्रीकृत वर्कफ़्लो प्रबंधन
- Path filtering और selective build