GitHub Actions Cheatsheet - मानक संरचना और सबसे उपयोगी कार्रवाइयों की सूची

कुछ सामान्य GitHub Actions और उनके संरचना के बारे में।

Page content

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

GitHub के अलावा, आप एक स्व-होस्टेड Gitea सर्वर में GitHub Actions का उपयोग कर सकते हैं।

github actions flow

यह सारांश GitHub actions संरचना, एक छोटा विवरण और ओपन सोर्स और वाणिज्यिक वर्कफ्लो में सबसे आम रूप से उपयोग किए जाने वाले कार्यों को कवर करता है। कार्रवाइयाँ आधिकारिक, समुदाय और तृतीय-पक्ष उपकरणों को समर्थन करती हैं, स्वचालन को निर्माण, परीक्षण से लेकर तैनाती, रिलीज प्रबंधन, QA, और सूचनाओं तक प्रदान करती हैं।

बुनियादी कॉन्फ़िगरेशन संरचना

GitHub Actions Workflows को YAML फाइलों में परिभाषित किया जाता है, जो रिपॉजिटरी के भीतर .github/workflows डायरेक्टरी में स्थित होती हैं।

name: Workflow Name
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: Run tests
        run: npm test
  • on ब्लॉक ट्रिगर इवेंट्स को निर्दिष्ट करता है।
  • हर job अपने रनर पर चलता है।
  • steps शेल कमांड चल सकते हैं या पुन: उपयोग योग्य कार्रवाइयों को कॉल कर सकते हैं।

कोर वर्कफ्लो घटक

घटक विवरण
वर्कफ्लो एक स्वचालित प्रक्रिया (YAML) जो एक इवेंट द्वारा ट्रिगर की जाती है
इवेंट गतिविधि जो वर्कफ्लो को ट्रिगर करती है (push, pull_request, आदि)
जॉब एक रनर पर चलने वाले चरणों की श्रृंखला, जो क्रमबद्ध या समांतर रूप से चल सकती है
चरण एक जॉब में हर कमांड या कार्रवाई
रनर VM या कंटेनर जहां जॉब्स को चलाया जाता है
कार्रवाई एक टास्क को एन्कैप्सुलेट करने वाला पुन: उपयोग योग्य एक्सटेंशन/एड-ऑन

ट्रिगर इवेंट्स

  • push
  • pull_request
  • schedule (cron सिंटैक्स का उपयोग करके)
  • workflow_dispatch (मैनुअल ट्रिगर, इनपुट पैरामीटर्स की अनुमति देता है)
  • release, issue, आदि।

उदाहरण:

on:
  push:
    branches: [ main ]
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string

उपयोगी बिल्ट-इन कार्रवाइयाँ

कार्रवाई उद्देश्य आम पैरामीटर्स
actions/checkout रिपॉजिटरी कोड को चेक आउट करें ref, token, submodules, persist-credentials
actions/setup-node Node.js वातावरण सेट अप करें node-version, cache, architecture, check-latest
actions/setup-python Python सेट अप करें python-version, architecture
actions/cache निर्भरताओं को कैश करें path, key, restore-keys
docker/build-push-action Docker इमेज बनाएं और पुश करें context, file, platforms, tags, push, build-args
actions/upload-artifact बिल्ड आर्टिफैक्ट्स अपलोड करें name, path, if-no-files-found
actions/download-artifact आर्टिफैक्ट्स डाउनलोड करें name, path
github/email-actions ईमेल सूचनाएं भेजें to, subject, content, attachments
peter-evans/create-pull-request वर्कफ्लो के माध्यम से PRs बनाएं branch, title, body, labels, base
actions/github-script अपने वर्कफ्लो में अनिरंतर JavaScript चलाएं script, github-token

कार्रवाई पैरामीटर्स

किसी भी कार्रवाई कॉल के लिए सामान्य पैरामीटर्स:

- name: Some Action or Step
  uses: owner/repo@ref
  with:
    param1: value
    param2: value
  env:
    ENV_VAR: value
  if: ${{ condition }}
  run: command_to_run
  shell: bash|pwsh|python|sh
  continue-on-error: true|false
  • with: कार्रवाई को पास किए गए तर्क (सभी विकल्पों के लिए कार्रवाई के दस्तावेज देखें)
  • env: चरण के लिए पर्यावरण चरों
  • if: शर्ती कार्यान्वयन
  • run: शेल कमांड (एक कार्रवाई का उपयोग नहीं करने के लिए)
  • shell: चरण चलाने के लिए उपयोग किया जाने वाला शेल
  • continue-on-error: चरण विफल होने पर भी आगे बढ़ें

कस्टम कार्रवाई इनपुट्स को परिभाषित करना

अपने कार्रवाई मेटाडेटा (action.yml) में:

inputs:
  example-input:
    description: 'An example input'
    required: false
    default: 'default-value'

एक वर्कफ्लो में उपयोग करते समय:

- uses: my/action@v1
  with:
    example-input: 'custom-value'

कार्रवाई चलने पर पर्यावरण चर INPUT_EXAMPLE_INPUT के रूप में एक्सेस किया जाता है।

उदाहरण: मैनुअल पैरामीटर्स के साथ वर्कफ्लो

name: Deploy
on:
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment Environment'
        required: true
        default: 'production'
        type: string
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Deploy to environment
        run: echo "Deploying to ${{ github.event.inputs.environment }}"

कार्रवाई मार्केटप्लेस

  • हजारों पुन: उपयोग योग्य कार्रवाइयाँ GitHub Marketplace पर उपलब्ध हैं।
  • श्रेणियाँ में शामिल हैं: क्लाउड तैनाती, सूचना उपकरण, परीक्षण फ्रेमवर्क, कोड विश्लेषण, और अधिक।
  • खोजें: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact, और बहुत सी अन्य।

त्वरित टिप्स

  • वर्कफ्लो फाइलों को .github/workflows में रखें।
  • workflow_dispatch का उपयोग inputs के साथ मैनुअल और पैरामीटराइज्ड रन के लिए करें।
  • cache कार्रवाई का उपयोग करके निर्भरताओं के इंस्टॉल को तेज करें।
  • कई OS/रनटाइम संस्करणों को परीक्षण करने के लिए जॉब matrix का उपयोग करें।
  • संवेदनशील डेटा के लिए सीक्रेट्स का उपयोग करें, जिन्हें ${{ secrets.SECRET_NAME }} के रूप में संदर्भित किया जाता है।

यह चीटशीट GitHub Actions का उपयोग, कॉन्फ़िगरेशन, और विस्तार करने के लिए स्वचालन, CI/CD, और अधिक के लिए आवश्यक बातों को कवर करता है। अधिक विवरण और अपडेट्स के लिए, हमेशा आधिकारिक GitHub दस्तावेज़ीकरण और कार्रवाई रिपॉजिटरी की जांच करें।

सामान्य GitHub Actions

यहाँ एक व्यावहारिक सूची है जो अक्सर उपयोग किए जाने वाले GitHub Actions की है, जो CI/CD, परीक्षण, निर्माण, तैनाती, और कार्यप्रवाह कार्यों को स्वचालित करने में मदद करती है:

कोर आधिकारिक Actions

Action उद्देश्य मुख्य उदाहरण पैरामीटर
actions/checkout रिपॉजिटरी कोड को चेकआउट करता है ref, submodules
actions/setup-node Node.js वातावरण सेटअप करता है node-version, cache
actions/setup-python Python वातावरण सेटअप करता है python-version
actions/setup-java Java JDK सेटअप करता है distribution, java-version
actions/cache निर्भरताओं और निर्माण आउटपुट्स को कैश करता है path, key, restore-keys
actions/upload-artifact निर्माण आर्टिफैक्ट्स को अपलोड करता है name, path
actions/download-artifact कार्यप्रवाह से आर्टिफैक्ट्स डाउनलोड करता है name, path
actions/github-script GitHub संदर्भ और API का उपयोग करके JavaScript चलाता है script
actions/create-release एक GitHub रिलीज बनाता है tag_name, release_name
actions/upload-release-asset रिलीज में संपत्तियाँ अपलोड करता है upload_url, asset_path
actions/labeler स्वचालित रूप से इश्यू/PRs पर लेबल लगाता है repo-token, configuration-path

लोकप्रिय समुदाय और तृतीय-पक्ष Actions

Action उद्देश्य
docker/build-push-action Docker इमेज बनाता और अपलोड करता है
actions/setup-go Go वातावरण सेटअप करता है
super-linter/super-linter सार्वभौमिक स्वचालित कोड लिंटिंग
trufflesecurity/trufflehog सीक्रेट्स और क्रेडेंशियल्स के लिए स्कैन करता है
peaceiris/actions-gh-pages GitHub Pages पर स्टैटिक साइट्स तैनात करता है
JamesIves/github-pages-deploy-action GitHub Pages पर परियोजनाएँ तैनात करता है
peter-evans/create-pull-request स्वचालित रूप से पुल रिक्वेस्ट बनाता है
softprops/action-gh-release GitHub रिलीज बनाता और अपलोड करता है
ad-m/github-push-action GitHub रिपॉजिटरी में बदलाव वापस पुश करता है
actions/setup-dotnet .NET SDK सेटअप करता है
azure/login Azure में प्रमाणित करता है
google-github-actions/auth Google Cloud में प्रमाणित करता है

परीक्षण, QA, और रिपोर्टिंग Actions

Action उद्देश्य
actions/setup-ruby Ruby वातावरण सेटअप करता है
codecov/codecov-action Codecov में कोड कवरेज रिपोर्ट्स अपलोड करता है
coverallsapp/github-action Coveralls में कवरेज परिणाम अपलोड करता है
dorny/test-reporter GitHub Checks में परीक्षण परिणाम जोड़ता है
stefanzweifel/git-auto-commit-action फाइल बदलाव स्वचालित रूप से कमिट और पुश करता है

तैनाती और सूचना Actions

Action उद्देश्य
appleboy/scp-action SCP का उपयोग करके फाइलें अपलोड करता है
SamKirkland/FTP-Deploy-Action FTP/FTPS के माध्यम से फाइलें तैनात करता है
cypress-io/github-action Cypress एंड-टू-एंड परीक्षण चलाता है
slackapi/slack-github-action Slack में संदेश भेजता है
dawidd6/action-send-mail कार्यप्रवाह चलाने के दौरान ईमेल भेजता है

उपयोगिता और कार्यप्रवाह प्रबंधन Actions

Action उद्देश्य
peter-evans/repository-dispatch बाहरी रिपॉजिटरी कार्यप्रवाह ट्रिगर करता है
fregante/setup-git-user कमिट्स के लिए Git उपयोगकर्ता प्रमाणपत्र सेट करता है
andymckay/labeler पथों के आधार पर इश्यू और PRs को लेबल करता है
actions/configure-pages GitHub Pages में प्रकाशन कॉन्फ़िगर करता है
EndBug/add-and-commit कार्यप्रवाह के भीतर फाइलें जोड़ता और कमिट करता है
dangoslen/changelog-enforcer PRs के लिए एक चेंजलॉग अपडेट किया गया था या नहीं यह जांचता है

और अधिक ढूँढने के तरीके

GitHub Actions की बहुत सी संख्या है जो कार्यप्रवाह स्वचालन को सक्षम बनाती है जैसे स्वचालित परीक्षण, उत्पादन में तैनाती, सूचनाएँ, और अन्य सेवाओं के साथ एकीकरण। GitHub Marketplace परीक्षण, सुरक्षा, तैनाती, सूचनाएँ, कोड गुणवत्ता, और एकीकरण जैसे श्रेणियों में हजारों एक्शन सूचीबद्ध करता है। “Awesome Actions” जैसे क्यूरेटेड सूचियाँ भी प्रेरणा और खोज के लिए अच्छी हैं।

उपयोगी लिंक