GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD · पाठ

Path filtering और selective build

monorepo और multi-repo setup में path filter, change detection और conditional matrix का उपयोग करके केवल बदलाव से प्रभावित workflow और job चलाएँ।

पाठ 4, कुल 4 में से13 चरण

Path filtering और selective build, CoddyKit पर GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

व्यर्थ बिल्ड की समस्या

मोनोरेपो में दस्तावेज़ीकरण में बदलाव होने पर बैकएंड, फ़्रंटएंड और मोबाइल ऐप को दोबारा बिल्ड और डिप्लॉय नहीं करना चाहिए।

चयनात्मक बिल्ड पाइपलाइन के बदलाव से प्रभावित हिस्सों को ही चलाते हैं, जिससे समय और रनर मिनट बचते हैं।

ट्रिगर पर पाथ फ़िल्टर

सबसे सरल तरीका ट्रिगर पर paths फ़िल्टर है। वर्कफ़्लो तभी चलता है जब पैटर्न से मेल खाने वाली फ़ाइलों में बदलाव हो।

on:
  push:
    paths:
      - 'services/api/**'

पाथ को अनदेखा करना

आप paths-ignore से इसका उल्टा भी कर सकते हैं: सूचीबद्ध पाथ को छोड़कर बाकी सभी के लिए वर्कफ़्लो चलाएँ।

केवल दस्तावेज़ीकरण में हुए बदलावों के लिए CI को छोड़ने में यह उपयोगी है।

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**.md'

ट्रिगर फ़िल्टर की सीमाएँ

ट्रिगर-स्तर के फ़िल्टर तय करते हैं कि पूरा वर्कफ़्लो चलेगा या नहीं। लेकिन मोनोरेपो में अक्सर आप ऐसा एक वर्कफ़्लो चाहते हैं जो तय करे कि कौन-से जॉब चलें।

इसके लिए वर्कफ़्लो के भीतर बदलावों का पता लगाएँ और परिणाम के आधार पर शाखा चुनें।

बदलाव-पता लगाने वाला action

dorny/paths-filter action अंतर की जाँच करता है और हर नामित पाथ समूह के लिए बूलियन आउटपुट देता है।

बाद के जॉब इन आउटपुट को पढ़कर तय करते हैं कि उन्हें चलना चाहिए या नहीं।

  - uses: dorny/paths-filter@v3
    id: changes
    with:
      filters: |
        api:
          - 'services/api/**'
        web:
          - 'services/web/**'

पता चले बदलावों के आधार पर जॉब चलाना

पता लगाने वाला जॉब आउटपुट उपलब्ध कराता है; उसके बाद वाले जॉब सशर्त रूप से चलने के लिए needs संदर्भ के साथ if इस्तेमाल करते हैं।

  build-api:
    needs: detect
    if: needs.detect.outputs.api == 'true'
    runs-on: ubuntu-latest
    steps:
      - run: ./build-api.sh

आउटपुट जोड़ना

पता लगाने वाले जॉब को ऐसे outputs घोषित करने चाहिए जो फ़िल्टर के परिणाम आगे भेजें, ताकि अन्य जॉब उन्हें पढ़ सकें।

  detect:
    runs-on: ubuntu-latest
    outputs:
      api: ${{ steps.changes.outputs.api }}
      web: ${{ steps.changes.outputs.web }}

गतिशील मैट्रिक्स

कई सेवाओं के लिए आप बदले हुए पाथ से मैट्रिक्स को गतिशील रूप से बना सकते हैं, ताकि केवल बदली हुई सेवाएँ ही मैट्रिक्स में आएँ।

एक जॉब में JSON सूची बनाएँ और उसे अगले जॉब के मैट्रिक्स में दें।

    strategy:
      matrix:
        service: ${{ fromJSON(needs.detect.outputs.list) }}

पता लगाने के लिए Git Diff

आप raw git से भी बदलावों का पता लगा सकते हैं। बदली हुई डायरेक्टरी की सूची पाने के लिए मौजूदा कमिट की तुलना आधार से करें।

git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -u

आवश्यक जाँच और छोड़े गए जॉब

सावधान रहें: यदि कुछ भी न बदलने के कारण कोई आवश्यक स्थिति-जाँच छोड़ दी जाती है, तो ब्रांच सुरक्षा उसके लिए प्रतीक्षा करते हुए मर्ज को रोक सकती है।

समाधान यह है कि एक अंतिम गेट जॉब जोड़ें, जो हमेशा सफल हो और एकमात्र आवश्यक जाँच हो तथा सशर्त जॉब का सार दे।

  gate:
    needs: [build-api, build-web]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all required jobs resolved'

हर पैकेज के लिए कैशिंग

चयनात्मक बिल्ड हर पैकेज के कैश के साथ अच्छी तरह काम करते हैं। कैश की कुंजी हर सेवा की लॉकफ़ाइल पर आधारित रखें, ताकि असंबंधित बदलाव उसे अमान्य न करें।

दोनों मिलकर रिपॉज़िटरी बढ़ने पर भी मोनोरेपो पाइपलाइनों को तेज़ रखते हैं।

त्वरित जाँच

चयनात्मक बिल्ड की अपनी समझ जाँचें।

पुनरावलोकन

आपने केवल बदली हुई चीज़ों को बिल्ड करना सीखा।

  • paths और paths-ignore पूरे वर्कफ़्लो को नियंत्रित करते हैं
  • बदलाव-पता लगाने वाले actions हर पाथ के लिए बूलियन आउटपुट देते हैं
  • जॉब सशर्त रूप से चलने के लिए if + needs का इस्तेमाल करते हैं और मैट्रिक्स गतिशील रूप से बनाए जा सकते हैं
  • आवश्यक जाँचों के साथ संगतता के लिए always() वाला गेट जॉब जोड़ें

चयनात्मक बिल्ड मोनोरेपो CI/CD को तेज़ और किफ़ायती रखते हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “Path filtering और selective build” पाठ निःशुल्क है?

हाँ—“Path filtering और selective build” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Path filtering और selective build” में मैं क्या सीखूँगा?

monorepo और multi-repo setup में path filter, change detection और conditional matrix का उपयोग करके केवल बदलाव से प्रभावित workflow और job चलाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Path filtering और selective build” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. मोनोरेपो के लिए CI/CD
  2. रिपॉज़िटरी-पार वर्कफ़्लो
  3. केंद्रीकृत वर्कफ़्लो प्रबंधन
  4. Path filtering और selective build
← GitHub Actions और DevOps पाइपलाइनों के साथ CI/CD पर वापस जाएँ