GitHub क्रियाओं में कार्यप्रवाह प्रबंधित और डीबग करें

पूरा किया

याद रखें कि आपका लक्ष्य कोड निर्माण और प्रकाशन प्रक्रिया को स्वचालित करना है ताकि हर बार डेवलपर द्वारा कोड बेस में परिवर्तन जोड़ने पर सुविधाओं का अद्यतन किया जा सके.

इस प्रक्रिया को लागू करने के लिए, आप निम्न कार्य करना सीखते हैं:

  • वर्कफ़्लो ट्रिगर करने वाले ईवेंट की पहचान करें.
  • GitHub क्रियाएँ वर्कफ़्लो लॉग का उपयोग करें।
  • सहेजें और निर्माण कलाकृतियों तक पहुंचें।
  • समीक्षा के बाद पुल अनुरोध में लेबल जोड़ने को स्वचालित करें।

वर्कफ़्लो ट्रिगर करने वाले ईवेंट की पहचान करें

यह समझना कि GitHub एक्शन वर्कफ़्लो को किसने ट्रिगर किया, डिबगिंग, ऑडिटिंग और CI/CD पाइपलाइनों को बेहतर बनाने के लिए महत्वपूर्ण है। ट्रिगर्स के प्रकार में एक शाखा के लिए एक पुश, एक पुल अनुरोध बनाया या अपडेट किया गया, एक अनुसूचित नौकरी या एक मैनुअल प्रेषण शामिल है। आप वर्कफ़्लो रन, रिपॉजिटरी परिवर्तन और संबंधित GitHub समस्या या पुल अनुरोध की जांच करके ट्रिगरिंग ईवेंट की पहचान कर सकते हैं।

आरेख जो GitHub क्रियाओं में विभिन्न वर्कफ़्लो ट्रिगर दिखाता है, जैसे पुश, पुल अनुरोध, शेड्यूल और मैन्युअल प्रेषण।

वर्कफ़्लो ट्रिगर क्या है?

वर्कफ़्लो ट्रिगर एक ईवेंट है जिसके कारण वर्कफ़्लो चलता है. GitHub विभिन्न प्रकार के ट्रिगर्स का समर्थन करता है, जिनमें शामिल हैं:

  • push या pull_request (कोड परिवर्तनों के आधार पर)
  • workflow_dispatch (एक मैनुअल ट्रिगर)
  • schedule (क्रॉन जॉब्स)
  • repository_dispatch (बाहरी सिस्टम)
  • समस्या, चर्चा, और पुल अनुरोध इवेंट (उदाहरण के लिए, issues.opened, pull_request.closed)

ट्रिगर घटना की पहचान करें

आप वर्कफ़्लो ट्रिगर ईवेंट को कई तरीकों से पहचान सकते हैं:

  • GitHub एक्शन UI का उपयोग करें:

    1. अपने रिपॉजिटरी में, क्रियाएं टैब चुनें।
    2. किसी वर्कफ़्लो रन का चयन करें.

    कोई ईवेंट प्रकार, जैसे push, pull_request, या workflow_dispatch, वर्कफ़्लो चलाएँ सारांश के शीर्ष पर प्रकट होता है.

  • लॉग या वर्कफ़्लो में उपयोग github.event_name करें.

    • GitHub वर्कफ़्लो चलाने के दौरान संदर्भ डेटा को उजागर करता है। github.event_name चर आपको बताता है कि किस ईवेंट ने वर्कफ़्लो ट्रिगर किया.

    • आप डीबगिंग के लिए एक चरण में जानकारी मुद्रित कर सकते हैं:

      -name: Show event trigger
        run: echo "Triggered by ${{ github.event_name }}"
      
  • वर्कफ़्लो रन विवरण का उपयोग करें:

    • यदि आप वर्कफ़्लो चलाता प्रोग्रामेटिकल, जैसे API का उपयोग करके का निरीक्षण करते हैं, तो चलाएँ ऑब्जेक्ट ट्रिगर निर्दिष्ट करता है जो गुण event शामिल हैं।
    • आप ट्रिगर के कारण का पता लगाने के लिए प्रतिबद्ध सुरक्षित हैश एल्गोरिथम (एसएचए), अभिनेता और टाइमस्टैम्प पा सकते हैं।

भंडार प्रभाव से ट्रिगर का अनुमान लगाएं

हो सकता है कि आपके पास वर्कफ़्लो रन तक सीधी पहुँच न हो, लेकिन आप अभी भी यह अनुमान लगाना चाहते हैं कि रिपॉज़िटरी गतिविधि के आधार पर वर्कफ़्लो रन को किसने ट्रिगर किया:

देखा गया व्यवहार ट्रिगर घटना
एक नई प्रतिबद्धता को main धक्का दिया गया और वर्कफ़्लो चला। push घटना
एक पुल अनुरोध खोला या अद्यतन किया गया था। pull_request घटना
किसी योगदानकर्ता ने मैन्युअल रूप से वर्कफ़्लो चलाया. workflow_dispatch
वर्कफ़्लो एक विशिष्ट समय पर दैनिक चलता है। schedule (क्रोन)
वर्कफ़्लो किसी बाह्य सेवा कॉल के बाद चला. repository_dispatch
वर्कफ़्लो तब चलता था जब किसी समस्या में कोई लेबल या टिप्पणी जोड़ी जाती थी. issues.* घटना

टाइमस्टैम्प्स की समीक्षा करके, अनुरोध गतिविधि खींचकर, और इतिहास को प्रतिबद्ध करके, आप अक्सर यह इंगित कर सकते हैं कि वर्कफ़्लो के चलने के कारण कौन सी क्रिया हुई.

वर्कफ़्लो ट्रिगर करने वाली चीज़ों की पहचान करने के तरीके को सारांशित करने के लिए:

  • क्रियाएँ टैब पर वर्कफ़्लो चलाएँ सारांश की जाँच करें.
  • दृश्यता के लिए वर्कफ़्लो के अंदर मुद्रित या लॉग इन github.event_name करें.
  • ट्रिगर का अनुमान लगाने के लिए टाइमस्टैम्प और रिपॉजिटरी गतिविधि (प्रतिबद्ध, पुल अनुरोध, मुद्दों) की तुलना करें।
  • गहन जांच के लिए पूर्ण event संदर्भ का उपयोग करें।

ये अभ्यास आपको अपने विकास और परिनियोजन पाइपलाइनों में वर्कफ़्लो विश्वसनीयता को डीबग, ऑडिट और बेहतर बनाने में मदद करते हैं।

किसी वर्कफ़्लो प्रभाव की कॉन्फ़िगरेशन फ़ाइल को पढ़कर उसे समझना

किसी वर्कफ़्लो की कॉन्फ़िगरेशन फ़ाइल को पढ़ने से उसके प्रभावों को समझने के लिए, में संग्रहीत फ़ाइल की .yml संरचना और सामग्री का .github/workflows/विश्लेषण करें.

वर्कफ़्लो कॉन्फ़िगरेशन फ़ाइल वर्कफ़्लो के बारे में निम्न जानकारी निर्दिष्ट करती है:

  • जब यह चलता है (अनुभाग में on )।
  • यह क्या करता है (में jobs और steps).
  • जहां यह चलता है runs-on (अनुभाग)।
  • यह क्यों चलता है (इसका उद्देश्य, जैसे परीक्षण, परिनियोजन या लाइनिंग)।
  • यह विशिष्ट परिस्थितियों (पर्यावरण, फ़िल्टर, तर्क) में कैसे व्यवहार करता है।

वर्कफ़्लो प्रभाव की व्याख्या करें

  1. ट्रिगर की पहचान करें।

    यह पहचानने के लिए कि किस क्रिया ने वर्कफ़्लो प्रारंभ किया, वर्कफ़्लो का अनुभाग देखें on .

    उदाहरण के लिए:

    on:
      push:
        branches: [main]
      pull_request:
        types: [opened, synchronize]
      workflow_dispatch:
    

    यह उदाहरण वर्कफ़्लो:

    • स्वचालित रूप से चलता है जब कोड को मुख्य शाखा ()push में धकेल दिया जाता है।
    • पुल अनुरोध बनाए या अपडेट किए जाने पर चलता है (pull_request)।
    • उपयोगकर्ता द्वारा मैन्युअल रूप से ट्रिगर किया जा सकता है (workflow_dispatch).
  2. कार्यप्रवाह कार्यों और चरणों की पहचान करें।

    वर्कफ़्लो क्या करता है यह निर्धारित करने के लिए, वर्कफ़्लो के jobs AND steps अनुभाग देखें.

    उदाहरण के लिए:

    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v3
          - name: Install dependencies
            run: npm install
          - name: Run tests
            run: npm test
    

    यह उदाहरण वर्कफ़्लो:

    • लिनक्स वर्चुअल वातावरण ()runs-on का उपयोग करता है।
    • रिपॉजिटरी के कोड (steps>name) की जाँच करता है।
    • प्रोजेक्ट निर्भरताएँ ()steps>name स्थापित करता है.
    • स्वचालित परीक्षण चलाता है (steps>name)।
  3. वर्कफ़्लो के उद्देश्य और परिणाम का मूल्यांकन करें।

    कॉन्फ़िगरेशन फ़ाइल को पढ़कर, आप वर्कफ़्लो के इच्छित परिणाम का वर्णन कर सकते हैं:

    "यह वर्कफ़्लो एक सतत एकीकरण (CI) पाइपलाइन है। यह सुनिश्चित करता है कि कोई भी नया कोड जिसे रिपॉजिटरी में धकेल दिया जाता है या पुल अनुरोध के माध्यम से सबमिट किया जाता है, स्वचालित रूप से परीक्षण किया जाता है। यदि परीक्षण विफल हो जाते हैं, तो GitHub वर्कफ़्लो UI कोड गुणवत्ता बनाए रखने में आपकी सहायता करने के लिए यह परिणाम प्रदर्शित करता है।

  4. उन वैकल्पिक सुविधाओं को पहचानें या सेट करें जो वर्कफ़्लो के चलने के तरीके को प्रभावित करती हैं:

    • env पर्यावरण चर सेट करता है।
    • if मानदंड पूरे होने पर केवल विशिष्ट चरणों को चलाने के लिए सशर्त तर्क जोड़ता है।
    • timeout-minutes या continue-on-error वर्कफ़्लो निष्पादन और त्रुटि हैंडलिंग सेट करें।

किसी विफल वर्कफ़्लो रन का निदान करना

  1. अपने भंडार में, क्रियाएं टैब पर जाएं।

  2. विफल रन खोजें (आमतौर पर लाल X द्वारा इंगित)।

  3. रन सारांश खोलने के लिए विफल वर्कफ़्लो का चयन करें.

  4. वर्कफ़्लो लॉग में, त्रुटि की समीक्षा करें.

    1. रन सारांश में, प्रत्येक कार्य और चरण का विस्तार करें जब तक कि आपको वह न मिल जाए जो विफलता को इंगित करता है।

    2. कार्य या चरण के लॉग देखने के लिए उसका चयन करें.

    3. ढूँढो:

      • त्रुटि संदेश
      • स्टैक ट्रेस
      • निकास कोड

    उदाहरण के लिए, एक असफल परीक्षण दिखा सकता है npm ERR! Test failed या exit code 1.

  5. वर्कफ़्लो कॉन्फ़िगरेशन फ़ाइल की जाँच करें।

    यह निर्धारित करने के लिए फ़ाइल का .yml उपयोग करें:

    • प्रत्येक कदम क्या करने की कोशिश कर रहा था?
    • यदि पर्यावरण चर (env) या सशर्त (if) हैं जो निष्पादन को प्रभावित करते हैं।
    • यदि विफलता अनुपलब्ध निर्भरता, सिंटैक्स त्रुटि या गलत कॉन्फ़िगर किए गए चरण के कारण है।

    यदि कोई चरण विफल रहता है, तो निम्न कारणों की जाँच करें:

    • क्या पिछले चरण में निर्भरताएँ सफलतापूर्वक स्थापित की गई थीं?
    • क्या परीक्षण फाइलें मौजूद हैं और स्थानीय रूप से पास होती हैं?

सामान्य विफलता परिदृश्य

निम्न तालिका सामान्य वर्कफ़्लो विफलता परिदृश्यों का वर्णन करता है:

Symptom संभावित कारण
एक चरण विफल हो जाता है और l लौटाता command not foundहै अनुपलब्ध निर्भरता या गलत सेटअप
npm install विफल। दूषित package-lock.json फ़ाइल या कोई नेटवर्क समस्या
एक परीक्षण चरण विफल इकाई परीक्षण समस्याएं, अनुपलब्ध कॉन्फ़िगरेशन फ़ाइल या अमान्य परीक्षण सिंटैक्स
Permission denied प्रकट। गलत फ़ाइल अनुमतियाँ या अनुपलब्ध रहस्य

GitHub में वर्कफ़्लो लॉग तक पहुँचने का तरीका पहचानें

  1. अपने भंडार में, क्रियाएं टैब पर जाएं।

  2. वर्कफ़्लोज़ की सूची में, प्रासंगिक वर्कफ़्लो का चयन करें.

    उदाहरण के लिए, यदि आपकी .yml फ़ाइल में निम्न कोड है, तो CI वर्कफ़्लो शीर्षक वाली एक लिंक सूची में प्रकट होती है:

    name: CI Workflow
    
  3. किसी विशिष्ट रन का चयन करें.

    स्थिति दिखाने वाले रनों की सूची में, उस विशिष्ट रन के टाइमस्टैम्प या प्रतिबद्ध संदेश का चयन करें जिसका आप निरीक्षण करना चाहते हैं।

  4. प्रत्येक कार्य और चरण का विस्तार करें।

    रन सारांश पृष्ठ कार्यप्रवाह फ़ाइल में निर्धारित किए गए कार्यों को प्रदर्शित करता है, जैसे बिल्ड या परीक्षण:

    1. किसी कार्य का विस्तार करने के लिए उसका चयन करें.
    2. कार्य के अंदर, अलग-अलग चरणों का विस्तार करें, जैसे "निर्भरताएँ स्थापित करें" या "परीक्षण चलाएँ."
  5. View लॉग आउटपुट।

    कंसोल लॉग, त्रुटि संदेश और डीबग जानकारी सहित पूर्ण लॉग आउटपुट देखने के लिए, वर्कफ़्लो चरण का चयन करें. आप लॉग को कॉपी, खोज और डाउनलोड कर सकते हैं।

निम्न तालिका वर्कफ़्लो लॉग तक पहुँचने के लिए आपके द्वारा उठाए गए चरणों को सारांशित करती है:

Action Purpose
कार्रवाइयाँ टैब सभी वर्कफ़्लो रन देखें.
वर्कफ़्लो नाम का चयन करें फ़िल्टर वर्कफ़्लो द्वारा चलता है.
एक रन चुनें विशिष्ट नौकरी और चरण परिणाम देखें।
चरणों का विस्तार करें विस्तृत लॉग देखें।
लॉग डाउनलोड करें ऑफ़लाइन या टीम समस्या निवारण के लिए लॉग डाउनलोड करें।

बिल्ड के लिए क्रिया लॉग

जब कोई वर्कफ़्लो चलता है, तो यह एक लॉग उत्पन्न करता है जिसमें जो हुआ उसका विवरण और कोई त्रुटि या परीक्षण विफलताएँ शामिल होती हैं.

यदि कोई त्रुटि उत्पन्न होती है या यदि कोई परीक्षण विफल हो जाता है, तो लॉग में हरे चेकमार्क के बजाय लाल X दिखाई देता है। आप त्रुटि के विवरण या जो हुआ उसकी जांच करने में विफलता की जांच कर सकते हैं।

GitHub क्रियाओं का स्क्रीनशॉट एक असफल परीक्षण के विवरण के साथ लॉग करता है।

कलाकृतियों के साथ काम करें

जब कोई वर्कफ़्लो लॉग प्रविष्टि के अलावा कुछ उत्पन्न करता है, तो उत्पाद को आर्टिफ़ैक्ट कहा जाता है. उदाहरण के लिए, Node.js बिल्ड एक डॉकर कंटेनर का उत्पादन करता है जिसे तैनात किया जा सकता है। कंटेनर एक आर्टिफ़ैक्ट है, जिसे आप कार्रवाई/अपलोड-आर्टिफैक्ट कार्रवाई का इस्तेमाल करके मेमोरी में अपलोड कर सकते हैं. आप बाद में क्रियाओं/डाउनलोड-आर्टिफैक्ट का उपयोग करके संग्रहण से आर्टिफ़ैक्ट डाउनलोड कर सकते हैं।

एक आर्टिफैक्ट को स्टोर करना इसे नौकरियों के बीच संरक्षित करता है। प्रत्येक कार्य VM के एक नए उदाहरण का उपयोग करता है, इसलिए आप इसे VM पर सहेजकर आर्टिफैक्ट का पुन: उपयोग नहीं कर सकते। यदि आपको किसी भिन्न कार्य में अपनी कलाकृतियों की आवश्यकता है, तो आप आर्टिफ़ैक्ट को एक कार्य में संग्रहण में अपलोड कर सकते हैं और उसे दूसरी नौकरी के लिए डाउनलोड कर सकते हैं.

विरूपण साक्ष्य भंडारण

कलाकृतियों को GitHub पर संग्रहण स्थान में संग्रहीत किया जाता है। सार्वजनिक रिपॉजिटरी के लिए स्थान निःशुल्क है, और खाते के आधार पर निजी रिपॉजिटरी के लिए कुछ भंडारण निःशुल्क है। GitHub आपकी कलाकृतियों को 90 दिनों तक संग्रहीत करता है।

निम्न वर्कफ़्लो स्निपेट में, ध्यान दें कि actions/upload-artifact@main क्रिया में एक path विशेषता है. इस विशेषता का मान आर्टिफैक्ट को संग्रहीत करने का पथ है। इस उदाहरण में, आप एक निर्देशिका में सब कुछ अपलोड करने के लिए सार्वजनिक / यदि आप केवल एक फ़ाइल अपलोड करना चाहते हैं, तो सार्वजनिकmytext.txt/

  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: npm install and build webpack
        run: |
          npm install
          npm run build
      - uses: actions/upload-artifact@main
        with:
          name: webpack artifacts
          path: public/

परीक्षण के लिए आर्टिफ़ैक्ट डाउनलोड करने के लिए, बिल्ड को सफलतापूर्वक पूरा करना होगा और आर्टिफ़ैक्ट को अपलोड करना होगा। निम्न कोड में, आप निर्दिष्ट करें कि परीक्षण कार्य बिल्ड कार्य पर निर्भर करता है।

test:
    needs: build
    runs-on: ubuntu-latest

निम्न वर्कफ़्लो स्निपेट में, आप आर्टिफ़ैक्ट डाउनलोड करते हैं. अब परीक्षण कार्य परीक्षण के लिए आर्टिफैक्ट का उपयोग कर सकता है।

steps:
    - uses: actions/checkout@v3
    - uses: actions/download-artifact@main
      with:
        name: webpack artifacts
        path: public

वर्कफ़्लोज़ में आर्टिफ़ैक्ट्स का उपयोग करने के बारे में अधिक जानकारी के लिए, वर्कफ़्लो डेटा को आर्टिफ़ैक्ट के रूप में संग्रहीत करना देखें.

वर्कफ़्लोज़ का उपयोग करके GitHub में समीक्षाओं को स्वचालित करें

GitHub ईवेंट जैसे push और pull-requestके माध्यम से वर्कफ़्लो शुरू करने के अलावा, आप शेड्यूल पर या GitHub के बाहर किसी ईवेंट के बाद वर्कफ़्लो चला सकते हैं।

हो सकता है कि आप किसी वर्कफ़्लो को केवल उपयोगकर्ता द्वारा कोई विशिष्ट क्रिया पूर्ण करने के बाद चलाना चाहें, जैसे कि समीक्षक द्वारा पुल अनुरोध अनुमोदित करने के बाद. इस परिदृश्य के लिए, आप पर pull-request-reviewट्रिगर कर सकते हैं।

एक और कार्रवाई जो आप कर सकते हैं वह है पुल अनुरोध में एक लेबल जोड़ना। इस मामले में, pullreminders/label-when-approved-action action का उपयोग करें।

उदाहरण के लिए:

    steps:
     - name: Label when approved
       uses: pullreminders/label-when-approved-action@main
       env:
         APPROVALS: "1"
         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         ADD_LABEL: "approved"

ब्लॉक में env , आप क्रिया के लिए परिवेश चर सेट करते हैं। उदाहरण के लिए, आप वर्कफ़्लो चलाने के लिए आवश्यक अनुमोदकों की संख्या सेट कर सकते हैं. इस उदाहरण में, यह एक है। secrets.GITHUB_TOKEN प्रमाणीकरण चर की आवश्यकता है क्योंकि क्रिया को लेबल जोड़कर आपके रिपॉसिटरी में परिवर्तन करना होगा। अंत में, आप जोड़ने के लिए लेबल का नाम दर्ज करें।

लेबल जोड़ना कोई ऐसा ईवेंट हो सकता है जो अन्य वर्कफ़्लो प्रारंभ करता है, जैसे कोई मर्ज. हम इस घटना को अगले मॉड्यूल में कवर करते हैं, जो GitHub क्रियाओं में निरंतर वितरण का उपयोग करने का वर्णन करता है।