From 5d063dd3af0174d26fa690565f785387ceae2541 Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Thu, 11 Dec 2025 18:50:05 +0000 Subject: [PATCH] Populate database upload results telemetry --- lib/analyze-action.js | 12 +++++++++--- src/analyze-action.ts | 24 ++++++++++++++++-------- src/database-upload.ts | 8 ++++---- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/lib/analyze-action.js b/lib/analyze-action.js index aec40a526..29b6b3ef1 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -93814,7 +93814,7 @@ async function postProcessAndUploadSarif(logger, features, uploadKind, checkoutP } // src/analyze-action.ts -async function sendStatusReport2(startedAt, config, stats, error3, trapCacheUploadTime, dbCreationTimings, didUploadTrapCaches, trapCacheCleanup, dependencyCacheResults, logger) { +async function sendStatusReport2(startedAt, config, stats, error3, trapCacheUploadTime, dbCreationTimings, didUploadTrapCaches, trapCacheCleanup, dependencyCacheResults, databaseUploadResults, logger) { const status = getActionsStatus(error3, stats?.analyze_failure_language); const statusReportBase = await createStatusReportBase( "finish" /* Analyze */, @@ -93832,7 +93832,8 @@ async function sendStatusReport2(startedAt, config, stats, error3, trapCacheUplo ...stats || {}, ...dbCreationTimings || {}, ...trapCacheCleanup || {}, - dependency_caching_upload_results: dependencyCacheResults + dependency_caching_upload_results: dependencyCacheResults, + database_upload_results: databaseUploadResults }; if (config && didUploadTrapCaches) { const trapCacheUploadStatusReport = { @@ -93914,6 +93915,7 @@ async function run() { let dbCreationTimings = void 0; let didUploadTrapCaches = false; let dependencyCacheResults; + let databaseUploadResults = []; initializeEnvironment(getActionVersion()); persistInputs(); const logger = getActionsLogger(); @@ -94069,7 +94071,7 @@ async function run() { logger.info("Not uploading results"); } await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); - await cleanupAndUploadDatabases( + databaseUploadResults = await cleanupAndUploadDatabases( repositoryNwo, codeql, config, @@ -94123,6 +94125,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger ); return; @@ -94141,6 +94144,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger ); } else if (runStats !== void 0) { @@ -94154,6 +94158,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger ); } else { @@ -94167,6 +94172,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger ); } diff --git a/src/analyze-action.ts b/src/analyze-action.ts index abbf23972..7896af877 100644 --- a/src/analyze-action.ts +++ b/src/analyze-action.ts @@ -25,7 +25,10 @@ import { isCodeQualityEnabled, isCodeScanningEnabled, } from "./config-utils"; -import { cleanupAndUploadDatabases } from "./database-upload"; +import { + cleanupAndUploadDatabases, + DatabaseUploadResult, +} from "./database-upload"; import { DependencyCacheUploadStatusReport, uploadDependencyCaches, @@ -59,15 +62,13 @@ interface AnalysisStatusReport extends uploadLib.UploadStatusReport, QueriesStatusReport {} -interface DependencyCachingUploadStatusReport { - dependency_caching_upload_results?: DependencyCacheUploadStatusReport; -} - interface FinishStatusReport extends StatusReportBase, DatabaseCreationTimings, - AnalysisStatusReport, - DependencyCachingUploadStatusReport {} + AnalysisStatusReport { + dependency_caching_upload_results?: DependencyCacheUploadStatusReport; + database_upload_results: DatabaseUploadResult[]; +} interface FinishWithTrapUploadStatusReport extends FinishStatusReport { /** Size of TRAP caches that we uploaded, in bytes. */ @@ -86,6 +87,7 @@ async function sendStatusReport( didUploadTrapCaches: boolean, trapCacheCleanup: TrapCacheCleanupStatusReport | undefined, dependencyCacheResults: DependencyCacheUploadStatusReport | undefined, + databaseUploadResults: DatabaseUploadResult[], logger: Logger, ) { const status = getActionsStatus(error, stats?.analyze_failure_language); @@ -106,6 +108,7 @@ async function sendStatusReport( ...(dbCreationTimings || {}), ...(trapCacheCleanup || {}), dependency_caching_upload_results: dependencyCacheResults, + database_upload_results: databaseUploadResults, }; if (config && didUploadTrapCaches) { const trapCacheUploadStatusReport: FinishWithTrapUploadStatusReport = { @@ -223,6 +226,7 @@ async function run() { let dbCreationTimings: DatabaseCreationTimings | undefined = undefined; let didUploadTrapCaches = false; let dependencyCacheResults: DependencyCacheUploadStatusReport | undefined; + let databaseUploadResults: DatabaseUploadResult[] = []; util.initializeEnvironment(actionsUtil.getActionVersion()); // Make inputs accessible in the `post` step, details at @@ -424,7 +428,7 @@ async function run() { // Possibly upload the database bundles for remote queries. // Note: Take care with the ordering of this call since databases may be cleaned up // at the `overlay` or `clear` level. - await cleanupAndUploadDatabases( + databaseUploadResults = await cleanupAndUploadDatabases( repositoryNwo, codeql, config, @@ -496,6 +500,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger, ); return; @@ -518,6 +523,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger, ); } else if (runStats !== undefined) { @@ -531,6 +537,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger, ); } else { @@ -544,6 +551,7 @@ async function run() { didUploadTrapCaches, trapCacheCleanupTelemetry, dependencyCacheResults, + databaseUploadResults, logger, ); } diff --git a/src/database-upload.ts b/src/database-upload.ts index 0f601bff1..d87f445e4 100644 --- a/src/database-upload.ts +++ b/src/database-upload.ts @@ -13,8 +13,8 @@ import { RepositoryNwo } from "./repository"; import * as util from "./util"; import { bundleDb, CleanupLevel, parseGitHubUrl } from "./util"; -/** Status report for a database upload. */ -interface DatabaseUploadReport { +/** Information about a database upload. */ +export interface DatabaseUploadResult { /** Language of the database. */ language: string; /** Size of the zipped database in bytes. */ @@ -34,7 +34,7 @@ export async function cleanupAndUploadDatabases( apiDetails: GitHubApiDetails, features: FeatureEnablement, logger: Logger, -): Promise { +): Promise { if (actionsUtil.getRequiredInput("upload-database") !== "true") { logger.debug("Database upload disabled in workflow. Skipping upload."); return []; @@ -93,7 +93,7 @@ export async function cleanupAndUploadDatabases( uploadsBaseUrl = uploadsBaseUrl.slice(0, -1); } - const reports: DatabaseUploadReport[] = []; + const reports: DatabaseUploadResult[] = []; for (const language of config.languages) { try { // Upload the database bundle.