La governance è un elemento chiave in qualsiasi organizzazione, soprattutto in contesti enterprise dove i progetti possono crescere rapidamente in termini di utenti, repository e consumo di risorse. Oltre agli aspetti di compliance e policy, rientra a pieno titolo anche il controllo dei costi. Fino a poco tempo fa, però, l'estrazione dei report di billing da GitHub richiedeva un passaggio manuale tramite interfaccia grafica, seguito dall'attesa di un'email contenente il link per il download. Un approccio poco adatto a scenari moderni, in cui l'automazione è centrale e i dati devono essere integrati in modo continuo in strumenti di analisi come Power BI o altri sistemi di reporting. Proprio per rispondere a questa esigenza, è stata introdotta una nuova API che consente di generare e scaricare i report dei costi in modo completamente automatizzato.
La prima cosa da fare è quella di indicare il formato del report (un sommario di alto livello, dettagliato, oppure specifico per utente e prodotto) e il periodo del report (per esempio tutto il mese in corso, in formato YYYY-MM-DD):
RESPONSE=$(curl -s -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/vnd.github+json" \
-H "Content-Type: application/json" \
-d '{"report_type": "summarized", "start_date": "2026-01-01", "end_date": "2026-01-31"}' \
"https://api.github.com/enterprises/$ENTERPRISE/settings/billing/reports")
REPORT_ID=$(echo $RESPONSE | jq -r '.id')In questo momento, di fatto, non abbiamo ancora ottenuto niente. La richiesta è stata inviata a GitHub e verrà elaborata quanto prima con un processo asincrono. Possiamo quindi tentare di recuperarne lo stato in polling:
for i in $(seq 1 60); do RESULT=$(curl -s -X GET -H "Authorization: Bearer $TOKEN" -H "Accept: application/vnd.github+json" "https://api.github.com/enterprises/$ENTERPRISE/settings/billing/reports/$REPORT_ID") STATUS=$(echo "$RESULT" | jq -r '.status') echo "[$i] status=$STATUS" if [ "$STATUS" = "completed" ]; then # download report.... fi sleep 30 done
Solo quando lo status sarà "completed" allora potremmo farne il download:
DOWNLOAD_URL=$(echo "$RESULT" | jq -r '.download_urls[0]')
echo "Downloading report..."
curl -s -o "billing_report_${ENTERPRISE}.csv" "$DOWNLOAD_URL"
echo "Saved to billing_report_${ENTERPRISE}.csv"
breakA questo punto il report è salvato in locale, ma chiaramente possiamo andare ad importarlo in altri sistemi interni, come un database SQL, uno Storage Account in Azure o così via per il processing.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ricerca delle GitHub issue tramite operatori logici
Importare repository da Bitbucket a GitHub Enterprise Cloud
Utilizzare i named query filter di Entity Framework
Realizzare un accordion con gli elementi HTML details e summary
Introduzione a GitHub Copilot CLI
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Utilizzare le direttive più importanti in una file based app .NET
Ciclo di vita risorse con .NET Aspire
Analizzare il contenuto di una issue con GitHub Models e AI
Integrare modelli AI in un workflow di GitHub
Evitare la compressione degli artefatti in un workflow di GitHub


