„SonarQube“ ataskaitų valdymo automatizavimas
Kelių mikropaslaugų kodo kokybės valdymas gali būti nelengva užduotis. Automatizavus „SonarQube“ ataskaitų atsisiuntimo, saugojimo ir įtraukimo į „Git“ saugyklą procesą, galima žymiai supaprastinti šią darbo eigą.
Šiame vadove paaiškinsime, kaip sukurti „bash“ scenarijų, kuris atsisiunčia „SonarQube“ ataskaitas apie 30 mikro paslaugų, išsaugo jas nurodytame „Linux“ serverio kataloge ir įkelia jas į „Git“ saugyklą. Pabaigoje taip pat išmoksite komandą rodyti šias ataskaitas savo serveryje.
komandą | apibūdinimas |
---|---|
mkdir -p | Sukuria katalogą, jei jo dar nėra. |
curl -u | Atlieka autentifikuotą HTTP užklausą, kad atsisiųstų failus iš serverio. |
os.makedirs | Rekursyviai sukuria katalogą, jei jo dar nėra (Python). |
subprocess.run | Vykdo komandą su argumentais ir laukia, kol ji bus baigta (Python). |
cp | Kopijuoja failus ar katalogus iš vienos vietos į kitą. |
git pull | Gauna ir sujungia pakeitimus iš nuotolinės Git saugyklos į dabartinę šaką. |
git add | Prideda failų pakeitimus darbo kataloge į sustojimo sritį. |
git commit -m | Įrašo saugyklos pakeitimus su pranešimu, apibūdinančiu pakeitimus. |
git push | Įkelia vietinės saugyklos turinį į nuotolinę saugyklą. |
requests.get | Siunčia GET užklausą nurodytu URL (Python). |
„SonarQube“ ataskaitų valdymo automatizavimas
Pateikti scenarijai skirti automatizuoti kelių mikropaslaugų „SonarQube“ ataskaitų atsisiuntimo procesą, jų saugojimą tam tikrame „Linux“ serverio kataloge ir šių ataskaitų perkėlimą į „Git“ saugyklą. The bash script pradedama apibrėžiant reikiamus kintamuosius, tokius kaip „SonarQube“ serverio URL, prieigos raktas, mikropaslaugų sąrašas, išteklių katalogas ir „Git“ saugyklos kelias. Tada jis sukuria išteklių katalogą, jei jo nėra mkdir -p. Scenarijus pereina per kiekvieną mikropaslaugą, sukuria ataskaitos URL ir naudoja curl -u norėdami atsisiųsti ataskaitą ir išsaugoti ją kaip JSON failą išteklių kataloge.
Atsisiuntus ataskaitas, scenarijus pakeičiamas į Git saugyklos katalogą, atlieka a git pull kad įsitikintų, jog joje yra naujausi pakeitimai, ir nukopijuoja atsisiųstas ataskaitas į „Git“ saugyklą. Tada jis pakoreguoja pakeitimus naudodamas git add, įpareigoja juos pranešimu naudojant git commit -m, ir perkelia pakeitimus į nuotolinę saugyklą su git push. The Python script atlieka panašias operacijas, panaudodamas svertą os.makedirs funkcija kurti katalogus, requests.get norėdami atsisiųsti ataskaitas ir subprocess.run Git komandų vykdymui. Ši sąranka užtikrina, kad „SonarQube“ ataskaitos būtų sistemingai valdomos ir saugomos.
„SonarQube“ ataskaitų, skirtų mikropaslaugoms, atsisiuntimas ir saugojimas
„Bash“ scenarijus, skirtas automatizuoti „SonarQube“ ataskaitų valdymą
#!/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“ operacijų automatizavimas „SonarQube“ ataskaitoms
Python scenarijus, skirtas valdyti SonarQube ataskaitas 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())
Automatizavimo tobulinimas naudojant Cron Jobs
Norėdami dar labiau automatizuoti „SonarQube“ ataskaitų atsisiuntimo ir patvirtinimo procesą, galite naudoti cron užduotis. „Cron“ užduotys yra suplanuotos užduotys „Unix“ tipo operacinėse sistemose, kurios vykdomos nustatytais intervalais. Nustatydami cron užduotį galite suplanuoti, kad scenarijai būtų paleisti automatiškai reguliariais intervalais, pvz., kasdien arba kas savaitę, užtikrinant, kad jūsų SonarQube ataskaitos visada būtų atnaujintos be rankinio įsikišimo. Norėdami sukurti cron darbą, galite naudoti crontab -e komanda, norėdami redaguoti cron lentelę ir pridėti įrašą, nurodantį scenarijų ir jo tvarkaraštį.
Šis metodas užtikrina, kad procesas būtų visiškai automatizuotas, ir sumažinama rizika, kad ataskaitų naujinimai nebus atnaujinami. Be to, galite naudoti žurnalo failus, kad galėtumėte sekti cron užduočių vykdymo sėkmę ar nesėkmę. Į savo scenarijų įtraukdami registravimo komandas, pvz echo "Log message" >> /path/to/logfile, galite sukurti išsamų visų veiklų žurnalą. Ši sąranka yra efektyvus ir patikimas būdas palaikyti nuolatinę integraciją ir nuolatinį pristatymą (CI/CD) jūsų mikropaslaugoms.
Dažni klausimai ir atsakymai
- Kaip nustatyti cron užduotį, kad paleisčiau scenarijų?
- Galite nustatyti cron darbą naudodami crontab -e komandą ir pridėti eilutę su tvarkaraščiu ir scenarijaus keliu.
- Kokių leidimų reikia norint paleisti šiuos scenarijus?
- Įsitikinkite, kad vartotojas, vykdantis scenarijus, turi leidimus skaityti / rašyti katalogus ir vykdyti scenarijaus failų leidimus.
- Kaip galiu tvarkyti scenarijaus vykdymo klaidas?
- Į savo scenarijų įtraukite klaidų tvarkymą naudodami if teiginius, kad patikrintų komandų sėkmę ir tinkamai registruotų klaidas.
- Ar atsisiuntimui galiu naudoti kitą įrankį, išskyrus curl?
- Taip, galite naudoti tokius įrankius kaip wget arba requests Python, norėdami atsisiųsti failus.
- Kaip užtikrinti, kad mano „Git“ saugykla visada būtų atnaujinta?
- Įtraukti git pull scenarijaus pradžioje, kad gautumėte naujausius pakeitimus iš nuotolinės saugyklos prieš atlikdami naujus įsipareigojimus.
- Ar galima paleisti šiuos scenarijus pagal kitą tvarkaraštį nei kasdien?
- Taip, galite tinkinti cron užduočių tvarkaraštį, kad jis būtų vykdomas kas valandą, kas savaitę ar bet kokiu kitu intervalu, pakeisdami cron užduoties įrašą.
- Koks yra geriausias būdas saugiai saugoti mano „SonarQube“ prieigos raktą?
- Išsaugokite „SonarQube“ prieigos raktą aplinkos kintamajame arba konfigūracijos faile su apribotais prieigos leidimais.
- Ar galiu peržiūrėti savo cron užduočių vykdymo žurnalus?
- Taip, galite peržiūrėti cron užduočių žurnalus sistemos cron žurnalo faile arba sukurti savo žurnalo failą scenarijuje.
- Kaip galiu patikrinti, ar ataskaitos tinkamai atsisiųstos?
- Naudoti cat komandą, kad būtų rodomas atsisiųstų ataskaitų failų turinys ir užtikrinama, kad jie tinkamai suformatuoti.
Proceso užbaigimas
„SonarQube“ ataskaitų valdymo automatizavimo procesas apima scenarijų, skirtų ataskaitoms atsisiųsti, saugoti ir įkelti į „Git“ saugyklą, kūrimą. Naudodami bash ir Python galite supaprastinti šias užduotis ir užtikrinti, kad jūsų mikro paslaugų kodo kokybė būtų nuosekliai stebima ir dokumentuojama. Įdiegus cron užduotis, pridedamas papildomas automatizavimo sluoksnis, sumažinamas rankinis įsikišimas. Tinkamas klaidų tvarkymas ir registravimas padidina sistemos patikimumą. Šis metodas ne tik sutaupo laiko, bet ir sklandžiai integruojasi į esamą CI/CD dujotiekį, suteikdamas patikimą sprendimą „SonarQube“ ataskaitoms valdyti „Linux“ serveryje.