गिट रिपोजिटरी में सोनारक्यूब रिपोर्ट कैसे सहेजें

Bash and Python

सोनारक्यूब रिपोर्ट प्रबंधन को स्वचालित करना

अनेक माइक्रोसर्विसेज़ के लिए कोड गुणवत्ता प्रबंधित करना एक कठिन कार्य हो सकता है। सोनारक्यूब रिपोर्ट को Git रिपॉजिटरी में डाउनलोड करने, संग्रहीत करने और प्रतिबद्ध करने की प्रक्रिया को स्वचालित करने से इस वर्कफ़्लो को महत्वपूर्ण रूप से सुव्यवस्थित किया जा सकता है।

इस गाइड में, हम आपको एक बैश स्क्रिप्ट बनाने के चरणों के बारे में बताएंगे जो 30 माइक्रोसर्विसेज के लिए सोनारक्यूब रिपोर्ट डाउनलोड करता है, उन्हें लिनक्स सर्वर पर निर्दिष्ट निर्देशिका में संग्रहीत करता है, और उन्हें गिट रिपॉजिटरी में भेजता है। अंत तक, आप इन रिपोर्टों को अपने सर्वर पर प्रदर्शित करने का आदेश भी सीख लेंगे।

आज्ञा विवरण
mkdir -p यदि यह पहले से मौजूद नहीं है तो एक निर्देशिका बनाता है।
curl -u सर्वर से फ़ाइलें डाउनलोड करने के लिए एक प्रमाणित HTTP अनुरोध निष्पादित करता है।
os.makedirs यदि यह पहले से मौजूद नहीं है तो पुनरावर्ती रूप से एक निर्देशिका बनाता है (पायथन)।
subprocess.run तर्कों के साथ एक कमांड चलाता है और इसके पूरा होने की प्रतीक्षा करता है (पायथन)।
cp फ़ाइलों या निर्देशिकाओं को एक स्थान से दूसरे स्थान पर कॉपी करता है।
git pull दूरस्थ Git रिपॉजिटरी से वर्तमान शाखा में परिवर्तन लाता है और विलय करता है।
git add कार्यशील निर्देशिका में फ़ाइल परिवर्तन को स्टेजिंग क्षेत्र में जोड़ता है।
git commit -m परिवर्तनों का वर्णन करने वाले संदेश के साथ रिपॉजिटरी में परिवर्तनों को रिकॉर्ड करता है।
git push स्थानीय रिपॉजिटरी सामग्री को दूरस्थ रिपॉजिटरी में अपलोड करता है।
requests.get एक निर्दिष्ट URL (पायथन) पर GET अनुरोध भेजता है।

सोनारक्यूब रिपोर्ट प्रबंधन को स्वचालित करना

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

रिपोर्ट डाउनलोड करने के बाद, स्क्रिप्ट Git रिपॉजिटरी निर्देशिका में बदल जाती है, एक प्रदर्शन करती है यह सुनिश्चित करने के लिए कि इसमें नवीनतम परिवर्तन हैं, और डाउनलोड की गई रिपोर्ट को Git रिपॉजिटरी में कॉपी करता है। इसके बाद इसका उपयोग करके परिवर्तनों को चरणबद्ध किया जाता है , उन्हें एक संदेश का उपयोग करके प्रतिबद्ध करता है , और परिवर्तनों को दूरस्थ रिपॉजिटरी में धकेलता है git push. का लाभ उठाते हुए संचालन का एक समान सेट निष्पादित करता है निर्देशिकाएँ बनाने का कार्य, रिपोर्ट डाउनलोड करने के लिए, और subprocess.run Git कमांड निष्पादित करने के लिए। यह सेटअप सुनिश्चित करता है कि सोनारक्यूब रिपोर्ट व्यवस्थित रूप से प्रबंधित और संग्रहीत हैं।

माइक्रोसर्विसेज के लिए सोनारक्यूब रिपोर्ट डाउनलोड करना और संग्रहीत करना

सोनारक्यूब रिपोर्ट प्रबंधन को स्वचालित करने के लिए बैश स्क्रिप्ट

#!/bin/bash
# Define variables
SONARQUBE_URL="http://your-sonarqube-server"
SONARQUBE_TOKEN="your-sonarqube-token"
MICROSERVICES=("service1" "service2" "service3" ... "service30")
RESOURCE_DIR="/root/resource"
GIT_REPO="/path/to/your/git/repo"

# Create resource directory if not exists
mkdir -p $RESOURCE_DIR

# Loop through microservices and download reports
for SERVICE in "${MICROSERVICES[@]}"; do
    REPORT_URL="$SONARQUBE_URL/api/measures/component?component=$SERVICE&metricKeys=coverage"
    curl -u $SONARQUBE_TOKEN: $REPORT_URL -o $RESOURCE_DIR/$SERVICE-report.json
done

# Change to git repository
cd $GIT_REPO
git pull

# Copy reports to git repository
cp $RESOURCE_DIR/*.json $GIT_REPO/resource/

# Commit and push reports to git repository
git add resource/*.json
git commit -m "Add SonarQube reports for microservices"
git push

# Command to display report in Linux server
cat $RESOURCE_DIR/service1-report.json

सोनारक्यूब रिपोर्ट के लिए गिट संचालन को स्वचालित करना

Git में सोनारक्यूब रिपोर्ट प्रबंधित करने के लिए पायथन स्क्रिप्ट

import os
import subprocess
import requests

# Define variables
sonarqube_url = "http://your-sonarqube-server"
sonarqube_token = "your-sonarqube-token"
microservices = ["service1", "service2", "service3", ..., "service30"]
resource_dir = "/root/resource"
git_repo = "/path/to/your/git/repo"

# Create resource directory if not exists
os.makedirs(resource_dir, exist_ok=True)

# Download reports
for service in microservices:
    report_url = f"{sonarqube_url}/api/measures/component?component={service}&metricKeys=coverage"
    response = requests.get(report_url, auth=(sonarqube_token, ''))
    with open(f"{resource_dir}/{service}-report.json", "w") as f:
        f.write(response.text)

# Git operations
subprocess.run(["git", "pull"], cwd=git_repo)
subprocess.run(["cp", f"{resource_dir}/*.json", f"{git_repo}/resource/"], shell=True)
subprocess.run(["git", "add", "resource/*.json"], cwd=git_repo)
subprocess.run(["git", "commit", "-m", "Add SonarQube reports for microservices"], cwd=git_repo)
subprocess.run(["git", "push"], cwd=git_repo)

# Command to display report
print(open(f"{resource_dir}/service1-report.json").read())

क्रॉन जॉब्स के साथ स्वचालन को बढ़ाना

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

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

  1. मैं अपनी स्क्रिप्ट चलाने के लिए क्रॉन जॉब कैसे सेट करूँ?
  2. आप इसका उपयोग करके क्रॉन जॉब सेट कर सकते हैं कमांड और शेड्यूल और स्क्रिप्ट पथ के साथ एक लाइन जोड़ना।
  3. इन स्क्रिप्ट्स को चलाने के लिए किन अनुमतियों की आवश्यकता है?
  4. सुनिश्चित करें कि स्क्रिप्ट चलाने वाले उपयोगकर्ता के पास निर्देशिकाओं को पढ़ने/लिखने की अनुमति है और स्क्रिप्ट फ़ाइलों के लिए अनुमतियाँ निष्पादित करें।
  5. मैं स्क्रिप्ट निष्पादन में त्रुटियों को कैसे संभाल सकता हूँ?
  6. अपनी स्क्रिप्ट में त्रुटि प्रबंधन को शामिल करें कमांड की सफलता की जांच करने और त्रुटियों को उचित रूप से लॉग करने के लिए स्टेटमेंट।
  7. क्या मैं डाउनलोड करने के लिए कर्ल के अलावा किसी अन्य टूल का उपयोग कर सकता हूं?
  8. हाँ, आप जैसे टूल का उपयोग कर सकते हैं या फ़ाइलें डाउनलोड करने के लिए पायथन में।
  9. मैं यह कैसे सुनिश्चित करूँ कि मेरी Git रिपॉजिटरी हमेशा अद्यतित रहे?
  10. शामिल करना नए कमिट करने से पहले रिमोट रिपॉजिटरी से नवीनतम परिवर्तन लाने के लिए अपनी स्क्रिप्ट की शुरुआत में।
  11. क्या इन स्क्रिप्ट्स को दैनिक के अलावा किसी अन्य शेड्यूल पर चलाना संभव है?
  12. हां, आप क्रॉन जॉब प्रविष्टि को संशोधित करके क्रॉन जॉब शेड्यूल को प्रति घंटा, साप्ताहिक या किसी अन्य अंतराल पर चलाने के लिए अनुकूलित कर सकते हैं।
  13. मेरे सोनारक्यूब टोकन को सुरक्षित रूप से संग्रहीत करने का सबसे अच्छा तरीका क्या है?
  14. अपने सोनारक्यूब टोकन को एक पर्यावरण चर या प्रतिबंधित पहुंच अनुमतियों वाली कॉन्फ़िगरेशन फ़ाइल में संग्रहीत करें।
  15. क्या मैं अपने क्रॉन जॉब निष्पादन के लॉग देख सकता हूँ?
  16. हाँ, आप सिस्टम की क्रॉन लॉग फ़ाइल में क्रॉन जॉब लॉग देख सकते हैं या स्क्रिप्ट के भीतर अपनी स्वयं की लॉग फ़ाइल बना सकते हैं।
  17. मैं कैसे सत्यापित कर सकता हूं कि रिपोर्ट सही ढंग से डाउनलोड की गई हैं?
  18. उपयोग डाउनलोड की गई रिपोर्ट फ़ाइलों की सामग्री को प्रदर्शित करने और यह सुनिश्चित करने के लिए कि वे सही ढंग से स्वरूपित हैं, कमांड।

सोनारक्यूब रिपोर्ट प्रबंधन को स्वचालित करने की प्रक्रिया में रिपोर्ट को डाउनलोड करने, संग्रहीत करने और Git रिपॉजिटरी में भेजने के लिए स्क्रिप्ट बनाना शामिल है। बैश और पायथन का उपयोग करके, आप इन कार्यों को सुव्यवस्थित कर सकते हैं और सुनिश्चित कर सकते हैं कि आपके माइक्रोसर्विसेज की कोड गुणवत्ता की लगातार निगरानी और दस्तावेजीकरण किया जाता है। क्रॉन जॉब्स को लागू करने से स्वचालन की एक अतिरिक्त परत जुड़ जाती है, जिससे मैन्युअल हस्तक्षेप कम हो जाता है। उचित त्रुटि प्रबंधन और लॉगिंग सिस्टम की मजबूती को बढ़ाते हैं। यह दृष्टिकोण न केवल समय बचाता है बल्कि आपके मौजूदा सीआई/सीडी पाइपलाइन में आसानी से एकीकृत होता है, जो लिनक्स सर्वर पर सोनारक्यूब रिपोर्ट के प्रबंधन के लिए एक विश्वसनीय समाधान प्रदान करता है।