GitHub Actions पर C# प्रोजेक्ट्स के लिए CI/CD: एक संपूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: C# डेवलपर के लिए CI/CD क्यों महत्वपूर्ण है



आधुनिक सॉफ्टवेयर डेवलपमेंट में, मैन्युअल टेस्टिंग और डिप्लॉयमेंट अक्षम और जोखिम भरा है। हर बार जब कोई डेवलपर रिपॉजिटरी में कोड पुश करता है, तो यह सुनिश्चित करने की आवश्यकता होती है कि बिल्ड टूटा नहीं है, टेस्ट पास हो रहे हैं, और एप्लिकेशन डिप्लॉयमेंट के लिए तैयार है। यहीं पर CI/CD (Continuous Integration / Continuous Deployment) काम आता है।



GitHub Actions GitHub में एक अंतर्निहित ऑटोमेशन टूल है जो आपको सीधे आपके रिपॉजिटरी में वर्कफ़्लो (workflows) बनाने की अनुमति देता है। यह C# (.NET) प्रोजेक्ट्स के लिए आदर्श है, क्योंकि यह Windows और Linux दोनों रनरों को सपोर्ट करता है, और इसमें तैयार एक्शन (actions) का एक समृद्ध पारिस्थितिकी तंत्र भी है।



इस लेख में, हम देखेंगे कि GitHub Actions का उपयोग करके C# प्रोजेक्ट के लिए एक पूर्ण CI/CD पाइपलाइन कैसे सेटअप करें: बिल्ड और टेस्टिंग से लेकर NuGet पैकेज प्रकाशित करने या वेब एप्लिकेशन डिप्लॉय करने तक।



GitHub Actions की मूल बातें: YAML और workflow संरचना



GitHub Actions में प्रत्येक workflow को YAML फ़ाइल में वर्णित किया जाता है, जो आपकी रिपॉजिटरी की .github/workflows/ निर्देशिका में संग्रहीत होती है। आइए मूल संरचना देखें:



name: .NET CI/CD

on: push: branches: [ main, develop ] pull_request: branches: [ main ]

jobs: build: runs-on: ubuntu-latest

steps: - name: Checkout code uses: actions/checkout@v4

- name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.x'

- name: Restore dependencies run: dotnet restore

- name: Build run: dotnet build --configuration Release --no-restore

- name: Run tests run: dotnet test --configuration Release --no-build --verbosity normal


मुख्य तत्व:

  • on — ट्रिगर (push, pull_request, schedule आदि)
  • jobs — कार्यों का सेट जो समानांतर या क्रमिक रूप से निष्पादित होते हैं
  • runs-on — निष्पादन के लिए ऑपरेटिंग सिस्टम (ubuntu-latest, windows-latest, macos-latest)
  • steps — कमांड या तैयार एक्शन का क्रम


महत्वपूर्ण: .NET प्रोजेक्ट्स के लिए, SDK संस्करण निर्दिष्ट करते हुए actions/setup-dotnet एक्शन का उपयोग करें। यह सुनिश्चित करता है कि वातावरण में .NET का आवश्यक संस्करण होगा।



C# कोड का परीक्षण और लिंटिंग सेटअप करना



गुणवत्तापूर्ण CI/CD स्वचालित परीक्षण और कोड शैली जांच के बिना पूरा नहीं हो सकता। आइए अपने workflow में यूनिट टेस्टिंग और स्थैतिक विश्लेषण के चरण जोड़ें।



xUnit के साथ यूनिट टेस्ट और कोड कवरेज



मान लीजिए कि आपके पास xUnit पर टेस्ट वाला एक प्रोजेक्ट है। Coverlet का उपयोग करके कवरेज रिपोर्ट जनरेट करने के लिए एक चरण जोड़ें:



- name: Run tests with coverage  run: |    dotnet test --configuration Release \      --no-build \      --verbosity normal \      /p:CollectCoverage=true \      /p:CoverletOutputFormat=opencover \      /p:CoverletOutput=./coverage.xml

- name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: files: ./coverage.xml flags: unittests fail_ci_if_error: false


इसके लिए, टेस्ट प्रोजेक्ट में coverlet.collector पैकेज जोड़ना आवश्यक है। कमांड का उदाहरण:



dotnet add package coverlet.collector


Roslyn Analyzers के साथ स्थैतिक विश्लेषण



अंतर्निहित .NET विश्लेषकों का उपयोग करके कोड जांच जोड़ें:



- name: Run Roslyn analyzers  run: dotnet build --configuration Release --warnaserror -p:RunAnalyzersDuringBuild=true


आप तृतीय-पक्ष टूल, जैसे SonarCloud का भी उपयोग कर सकते हैं:



- name: SonarCloud Scan  uses: SonarSource/sonarcloud-github-action@master  env:    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}    SONAR_TOKEN: ${{ secrets.SON                

ब्लॉग

पुस्तक अनुशंसाएँ