व्यायाम - GitHub क्रियाओं में GitHub स्क्रिप्ट का उपयोग करना

Complete

इस इकाई में, आप इस बारे में अधिक जानेंगे कि आप अपने वर्कफ़्लो को बेहतर बनाने के लिए GitHub स्क्रिप्ट का उपयोग कैसे कर सकते हैं।

किसी प्रोजेक्ट बोर्ड में समस्याएँ जोड़ना

टिप्पणियां बनाने और पुल अनुरोध खोलने के लिए ऑक्टोकिट/rest.js का उपयोग करने के अलावा, आप गिटहब प्रोजेक्ट्स को प्रबंधित करने के लिए ऑक्टोकिट/rest.js का भी उपयोग कर सकते हैं। निम्न कोड नमूने में, आप किसी भी व्यक्ति को रिपॉसिटरी करने के लिए कोई नया मुद्दा जोड़ता है जो चलता है एक वर्कफ़्लो बनाएँ। यह समस्या को प्रोजेक्ट बोर्ड में जोड़ता है, जिससे आपके लिए अपना काम ट्राइएज करना आसान हो जाता है।

name: Learning GitHub Script
on:
  issues:
    types: [opened]
jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/github-script@0.8.0
      with:
        github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
        script: |
            github.issues.createComment({
            issue_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: "🎉 You've created this issue comment using GitHub Script!!!"
            })
            github.projects.createCard({
            column_id: {{columnID}},
            content_id: context.payload.issue.id,
            content_type: "Issue"
            });

जब भी कोई नई समस्या बनाई जाती है, जो पिछली इकाई में शामिल होती है, तो इस वर्कफ़्लो का पहला अनुभाग एक टिप्पणी बनाता है. अगला खंड इस समस्या के आधार पर एक कार्ड बनाता है और इसे प्रोजेक्ट बोर्ड में जोड़ता है।

वर्कफ़्लो को चरणों में अलग करें

क्रियाओं का उपयोग करने का एक लाभ यह है कि आप कार्यों को कार्य की छोटी इकाइयों में अलग कर सकते हैं जिन्हें चरण कहा जाता है। पूर्ववर्ती उदाहरण वर्कफ़्लो में, आप वर्कफ़्लो को दो चरणों में अलग कर सकते हैं.

वर्तमान वर्कफ़्लो को एकाधिक चरणों में विभाजित करने का एक लाभ यह है कि यह आपको तर्क लागू करने के लिए व्यंजकों का उपयोग करने में सक्षम करता है. चरणों का उपयोग करने से आप चरणों को चलाने की अनुमति दिए जाने के आस-पास नियम बना सकते हैं और आपके वर्कफ़्लो चलाने को ऑप्टिमाइज़ करने में मदद कर सकते हैं.

उदाहरण वर्कफ़्लो को चरणों में अलग करने के लिए:

  • प्रत्येक चरण को नाम दें, ताकि आप उसे क्रियाएँ टैब से ट्रैक कर सकें.
  • यह निर्धारित करने के लिए व्यंजकों का उपयोग करें कि क्या कोई चरण चलना चाहिए (वैकल्पिक).

इस उदाहरण में, मूल वर्कफ़्लो फ़ाइल में दो कार्य अलग-अलग चरणों में विभाजित हैं:

name: Learning GitHub Script
on:
  issues:
    types: [opened]
jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
    - name: Comment on new issue
      uses: actions/github-script@0.8.0
      with:
        github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
        script: |
            github.issues.createComment({
            issue_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: "🎉 You've created this issue comment using GitHub Script!!!"
            })
    - name: Add issue to project board
      if: contains(github.event.issue.labels.*.name, 'bug')
      uses: actions/github-script@0.8.0
      with:
        github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
        script: |
            github.projects.createCard({
            column_id: {{columnID}},
            content_id: context.payload.issue.id,
            content_type: "Issue"
            });

प्रत्येक चरण में एक वर्णनात्मक name तत्व शामिल होता है जो आपको इसे क्रियाएं टैब से ट्रैक करने में भी मदद करता है।

चरण में Add issue to project board एक if बयान भी शामिल है जो निर्दिष्ट करता है कि समस्या को परियोजना बोर्ड में केवल तभी जोड़ा जाना चाहिए जब इसे लेबल किया गया हो bug

Node.js वातावरण का उपयोग करें

GitHub Script आपको पूर्ण Node.js वातावरण तक पहुंच भी प्रदान करती है। यद्यपि हम जटिल क्रियाओं के लिए तर्क लिखने के लिए GitHub स्क्रिप्ट का उपयोग करने की अनुशंसा नहीं करते हैं, आप इसका उपयोग ऑक्टो/rest.js API में अधिक कार्यक्षमता जोड़ने के लिए कर सकते हैं।

उदाहरण के लिए, जब भी कोई समस्या खोली जाती है, तो आप योगदान मार्गदर्शिका प्रदर्शित करने के लिए Node.js का उपयोग कर सकते हैं। आप फ़ाइल को पढ़ने के लिए Node.js फ़ाइल सिस्टम का उपयोग कर सकते हैं और इसे समस्या टिप्पणी के मुख्य भाग के रूप में उपयोग कर सकते हैं। रिपॉजिटरी के भीतर फ़ाइलों तक पहुँचने के लिए, वर्कफ़्लो में पहले चरण के रूप में actions/checkout क्रिया शामिल करें।

निम्न उदाहरण वर्कफ़्लो फ़ाइल में निम्न परिवर्तन करता है:

  • पर स्थित टेम्पलेट प्रतिसाद फ़ाइल को पढ़ने के लिए क्रिया जोड़ता action/checkout है .github/ISSUE_RESPONSES/comment.md
  • हमारे टेम्पलेटेड प्रतिक्रिया की सामग्री को समस्या टिप्पणी के मुख्य भाग के रूप में रखने के लिए Node.js फ़ाइल सिस्टम मॉड्यूल का उपयोग करने के लिए जावास्क्रिप्ट जोड़ता है
name: Learning GitHub Script
on:
  issues:
    types: [opened]
jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
      - name: Comment on new issue
        uses: actions/github-script@0.8.0
        with:
          github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
          script: |
             const fs = require('fs')
             const issueBody = fs.readFileSync(".github/ISSUE_RESPONSES/comment.md", "utf8")
             github.issues.createComment({
             issue_number: context.issue.number,
             owner: context.repo.owner,
             repo: context.repo.repo,
             body: issueBody
             })
      - name: Add issue to project board
        if: contains(github.event.issue.labels.*.name, 'bug')
        uses: actions/github-script@0.8.0
        with:
          github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
          script: |
            github.projects.createCard({
            column_id: {{columnID}},
            content_id: context.payload.issue.id,
            content_type: "Issue"
            });

GitHub स्क्रिप्ट ने आपको एक नए मुद्दे पर व्यापक प्रतिक्रिया बनाने में मदद की। यह प्रतिक्रिया रिपॉजिटरी में एक टेम्पलेट पर भी आधारित है, इसलिए इसे बदलना आसान है। अंत में, आपने प्रोजेक्ट बोर्ड में समस्या को जोड़ने के लिए एक ट्रिगर भी शामिल किया ताकि आप इसे भविष्य के काम के लिए आसानी से ट्राइएज कर सकें।