GitHub Actions Cheatsheet - मानक संरचना और सबसे उपयोगी कार्रवाइयों की सूची
कुछ सामान्य GitHub Actions और उनके संरचना के बारे में।
GitHub Actions GitHub का एक स्वचालन और CI/CD प्लेटफॉर्म है, जो कोड को पुश, पुल रिक्वेस्ट, या एक अनुसूची के आधार पर बनाना, परीक्षण करना और तैनात करना के लिए उपयोग किया जाता है।
GitHub के अलावा, आप एक स्व-होस्टेड Gitea सर्वर में GitHub Actions का उपयोग कर सकते हैं।
यह सारांश 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” जैसे क्यूरेटेड सूचियाँ भी प्रेरणा और खोज के लिए अच्छी हैं।
उपयोगी लिंक
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- GIT Cheatsheet
- Gitea - installing and testing
- Backup and restore Gitea server
- Using Gitea Actions deploy Hugo website to AWS S3
- Gitflow: Steps, Alternatives, Pros, and Cons
- DevOps with GitOps - Argo CD, Flux, Jenkins X, Weave GitOps and others