Merge pull request #3316 from github/henrymercer/upload-overlay-to-api

Upload overlay base DBs to GitHub API behind FF
This commit is contained in:
Henry Mercer
2025-11-19 10:29:28 +00:00
committed by GitHub
20 changed files with 241 additions and 139 deletions

View File

@@ -120074,6 +120074,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -120185,21 +120190,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

41
lib/analyze-action.js generated
View File

@@ -88525,7 +88525,7 @@ function checkOverlayBaseDatabase(config, logger, warningPrefix) {
} }
return true; return true;
} }
async function uploadOverlayBaseDatabaseToCache(codeql, config, logger) { async function cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger) {
const overlayDatabaseMode = config.overlayDatabaseMode; const overlayDatabaseMode = config.overlayDatabaseMode;
if (overlayDatabaseMode !== "overlay-base" /* OverlayBase */) { if (overlayDatabaseMode !== "overlay-base" /* OverlayBase */) {
logger.debug( logger.debug(
@@ -88554,7 +88554,7 @@ async function uploadOverlayBaseDatabaseToCache(codeql, config, logger) {
return false; return false;
} }
await withGroupAsync("Cleaning up databases", async () => { await withGroupAsync("Cleaning up databases", async () => {
await codeql.databaseCleanupCluster(config, "overlay"); await codeql.databaseCleanupCluster(config, "overlay" /* Overlay */);
}); });
const dbLocation = config.dbLocation; const dbLocation = config.dbLocation;
const databaseSizeBytes = await tryGetFolderBytes(dbLocation, logger); const databaseSizeBytes = await tryGetFolderBytes(dbLocation, logger);
@@ -88695,6 +88695,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -88806,21 +88811,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,
@@ -91667,7 +91672,7 @@ async function warnIfGoInstalledAfterInit(config, logger) {
// src/database-upload.ts // src/database-upload.ts
var fs13 = __toESM(require("fs")); var fs13 = __toESM(require("fs"));
async function uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger) { async function cleanupAndUploadDatabases(repositoryNwo, codeql, config, apiDetails, features, logger) {
if (getRequiredInput("upload-database") !== "true") { if (getRequiredInput("upload-database") !== "true") {
logger.debug("Database upload disabled in workflow. Skipping upload."); logger.debug("Database upload disabled in workflow. Skipping upload.");
return; return;
@@ -91690,8 +91695,9 @@ async function uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger
logger.debug("Not analyzing default branch. Skipping upload."); logger.debug("Not analyzing default branch. Skipping upload.");
return; return;
} }
const cleanupLevel = config.overlayDatabaseMode === "overlay-base" /* OverlayBase */ && await features.getValue("upload_overlay_db_to_api" /* UploadOverlayDbToApi */) ? "overlay" /* Overlay */ : "clear" /* Clear */;
await withGroupAsync("Cleaning up databases", async () => { await withGroupAsync("Cleaning up databases", async () => {
await codeql.databaseCleanupCluster(config, "clear"); await codeql.databaseCleanupCluster(config, cleanupLevel);
}); });
const client = getApiClient(); const client = getApiClient();
const uploadsUrl = new URL(parseGitHubUrl(apiDetails.url)); const uploadsUrl = new URL(parseGitHubUrl(apiDetails.url));
@@ -94048,8 +94054,15 @@ async function run() {
} else { } else {
logger.info("Not uploading results"); logger.info("Not uploading results");
} }
await uploadOverlayBaseDatabaseToCache(codeql, config, logger); await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger);
await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); await cleanupAndUploadDatabases(
repositoryNwo,
codeql,
config,
apiDetails,
features,
logger
);
const trapCacheUploadStartTime = import_perf_hooks3.performance.now(); const trapCacheUploadStartTime = import_perf_hooks3.performance.now();
didUploadTrapCaches = await uploadTrapCaches(codeql, config, logger); didUploadTrapCaches = await uploadTrapCaches(codeql, config, logger);
trapCacheUploadTime = import_perf_hooks3.performance.now() - trapCacheUploadStartTime; trapCacheUploadTime = import_perf_hooks3.performance.now() - trapCacheUploadStartTime;

View File

@@ -84014,6 +84014,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -84125,21 +84130,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -123455,6 +123455,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -123566,21 +123571,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

21
lib/init-action.js generated
View File

@@ -86109,6 +86109,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -86220,21 +86225,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -84005,6 +84005,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -84116,21 +84121,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -83917,6 +83917,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -84028,21 +84033,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -119480,6 +119480,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -119591,21 +119596,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -100033,6 +100033,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -100144,21 +100149,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

21
lib/upload-lib.js generated
View File

@@ -87071,6 +87071,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -87182,21 +87187,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -119646,6 +119646,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -119757,21 +119762,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

View File

@@ -86867,6 +86867,11 @@ var featureConfig = {
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["overlay_analysis" /* OverlayAnalysis */]: { ["overlay_analysis" /* OverlayAnalysis */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -86978,21 +86983,21 @@ var featureConfig = {
minimumVersion: void 0, minimumVersion: void 0,
toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */
}, },
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
},
["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: void 0 minimumVersion: void 0
}, },
["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0" minimumVersion: void 0
},
["use_repository_properties" /* UseRepositoryProperties */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: void 0
}, },
["validate_db_config" /* ValidateDbConfig */]: { ["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false, defaultValue: false,

7
package-lock.json generated
View File

@@ -1578,7 +1578,6 @@
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "20 || >=22" "node": "20 || >=22"
@@ -1588,7 +1587,6 @@
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
"integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@isaacs/balanced-match": "^4.0.1" "@isaacs/balanced-match": "^4.0.1"
@@ -6171,7 +6169,6 @@
"version": "11.1.0", "version": "11.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz",
"integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==",
"dev": true,
"license": "BlueOak-1.0.0", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"foreground-child": "^3.3.1", "foreground-child": "^3.3.1",
@@ -6206,7 +6203,6 @@
"version": "10.1.1", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
"dev": true,
"license": "BlueOak-1.0.0", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"@isaacs/brace-expansion": "^5.0.0" "@isaacs/brace-expansion": "^5.0.0"
@@ -6875,7 +6871,6 @@
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
"integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
"dev": true,
"license": "BlueOak-1.0.0", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"@isaacs/cliui": "^8.0.2" "@isaacs/cliui": "^8.0.2"
@@ -7118,7 +7113,6 @@
"version": "11.1.0", "version": "11.1.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz",
"integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==",
"dev": true,
"license": "ISC", "license": "ISC",
"engines": { "engines": {
"node": "20 || >=22" "node": "20 || >=22"
@@ -7776,7 +7770,6 @@
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
"integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
"dev": true,
"license": "BlueOak-1.0.0", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"lru-cache": "^11.0.0", "lru-cache": "^11.0.0",

View File

@@ -25,7 +25,7 @@ import {
isCodeQualityEnabled, isCodeQualityEnabled,
isCodeScanningEnabled, isCodeScanningEnabled,
} from "./config-utils"; } from "./config-utils";
import { uploadDatabases } from "./database-upload"; import { cleanupAndUploadDatabases } from "./database-upload";
import { import {
DependencyCacheUploadStatusReport, DependencyCacheUploadStatusReport,
uploadDependencyCaches, uploadDependencyCaches,
@@ -35,7 +35,7 @@ import { EnvVar } from "./environment";
import { Feature, Features } from "./feature-flags"; import { Feature, Features } from "./feature-flags";
import { KnownLanguage } from "./languages"; import { KnownLanguage } from "./languages";
import { getActionsLogger, Logger } from "./logging"; import { getActionsLogger, Logger } from "./logging";
import { uploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; import { cleanupAndUploadOverlayBaseDatabaseToCache } from "./overlay-database-utils";
import { getRepositoryNwo } from "./repository"; import { getRepositoryNwo } from "./repository";
import * as statusReport from "./status-report"; import * as statusReport from "./status-report";
import { import {
@@ -417,12 +417,21 @@ async function run() {
} }
// Possibly upload the overlay-base database to actions cache. // Possibly upload the overlay-base database to actions cache.
// If databases are to be uploaded, they will first be cleaned up at the overlay level. // Note: Take care with the ordering of this call since databases may be cleaned up
await uploadOverlayBaseDatabaseToCache(codeql, config, logger); // at the `overlay` level.
await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger);
// Possibly upload the database bundles for remote queries. // Possibly upload the database bundles for remote queries.
// If databases are to be uploaded, they will first be cleaned up at the clear level. // Note: Take care with the ordering of this call since databases may be cleaned up
await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); // at the `overlay` or `clear` level.
await cleanupAndUploadDatabases(
repositoryNwo,
codeql,
config,
apiDetails,
features,
logger,
);
// Possibly upload the TRAP caches for later re-use // Possibly upload the TRAP caches for later re-use
const trapCacheUploadStartTime = performance.now(); const trapCacheUploadStartTime = performance.now();

View File

@@ -35,7 +35,7 @@ import { ToolsDownloadStatusReport } from "./tools-download";
import { ToolsFeature, isSupportedToolsFeature } from "./tools-features"; import { ToolsFeature, isSupportedToolsFeature } from "./tools-features";
import { shouldEnableIndirectTracing } from "./tracer-config"; import { shouldEnableIndirectTracing } from "./tracer-config";
import * as util from "./util"; import * as util from "./util";
import { BuildMode, getErrorMessage } from "./util"; import { BuildMode, CleanupLevel, getErrorMessage } from "./util";
type Options = Array<string | number | boolean>; type Options = Array<string | number | boolean>;
@@ -141,7 +141,10 @@ export interface CodeQL {
/** /**
* Clean up all the databases within a database cluster. * Clean up all the databases within a database cluster.
*/ */
databaseCleanupCluster(config: Config, cleanupLevel: string): Promise<void>; databaseCleanupCluster(
config: Config,
cleanupLevel: CleanupLevel,
): Promise<void>;
/** /**
* Run 'codeql database bundle'. * Run 'codeql database bundle'.
*/ */
@@ -878,7 +881,7 @@ export async function getCodeQLForCmd(
}, },
async databaseCleanupCluster( async databaseCleanupCluster(
config: Config, config: Config,
cleanupLevel: string, cleanupLevel: CleanupLevel,
): Promise<void> { ): Promise<void> {
const cacheCleanupFlag = (await util.codeQlVersionAtLeast( const cacheCleanupFlag = (await util.codeQlVersionAtLeast(
this, this,

View File

@@ -10,11 +10,12 @@ import { GitHubApiDetails } from "./api-client";
import * as apiClient from "./api-client"; import * as apiClient from "./api-client";
import { createStubCodeQL } from "./codeql"; import { createStubCodeQL } from "./codeql";
import { Config } from "./config-utils"; import { Config } from "./config-utils";
import { uploadDatabases } from "./database-upload"; import { cleanupAndUploadDatabases } from "./database-upload";
import * as gitUtils from "./git-utils"; import * as gitUtils from "./git-utils";
import { KnownLanguage } from "./languages"; import { KnownLanguage } from "./languages";
import { RepositoryNwo } from "./repository"; import { RepositoryNwo } from "./repository";
import { import {
createFeatures,
createTestConfig, createTestConfig,
getRecordingLogger, getRecordingLogger,
LoggedMessage, LoggedMessage,
@@ -91,11 +92,12 @@ test("Abort database upload if 'upload-database' input set to false", async (t)
sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(true); sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(true);
const loggedMessages = []; const loggedMessages = [];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
getTestConfig(tmpDir), getTestConfig(tmpDir),
testApiDetails, testApiDetails,
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
t.assert( t.assert(
@@ -121,7 +123,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled",
await mockHttpRequests(201); await mockHttpRequests(201);
const loggedMessages = []; const loggedMessages = [];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
{ {
@@ -129,6 +131,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled",
analysisKinds: [AnalysisKind.CodeQuality], analysisKinds: [AnalysisKind.CodeQuality],
}, },
testApiDetails, testApiDetails,
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
t.assert( t.assert(
@@ -155,11 +158,12 @@ test("Abort database upload if running against GHES", async (t) => {
config.gitHubVersion = { type: GitHubVariant.GHES, version: "3.0" }; config.gitHubVersion = { type: GitHubVariant.GHES, version: "3.0" };
const loggedMessages = []; const loggedMessages = [];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
config, config,
testApiDetails, testApiDetails,
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
t.assert( t.assert(
@@ -183,11 +187,12 @@ test("Abort database upload if not analyzing default branch", async (t) => {
sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(false); sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(false);
const loggedMessages = []; const loggedMessages = [];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
getTestConfig(tmpDir), getTestConfig(tmpDir),
testApiDetails, testApiDetails,
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
t.assert( t.assert(
@@ -212,11 +217,12 @@ test("Don't crash if uploading a database fails", async (t) => {
await mockHttpRequests(500); await mockHttpRequests(500);
const loggedMessages = [] as LoggedMessage[]; const loggedMessages = [] as LoggedMessage[];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
getTestConfig(tmpDir), getTestConfig(tmpDir),
testApiDetails, testApiDetails,
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
@@ -243,11 +249,12 @@ test("Successfully uploading a database to github.com", async (t) => {
await mockHttpRequests(201); await mockHttpRequests(201);
const loggedMessages = [] as LoggedMessage[]; const loggedMessages = [] as LoggedMessage[];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
getTestConfig(tmpDir), getTestConfig(tmpDir),
testApiDetails, testApiDetails,
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
t.assert( t.assert(
@@ -272,7 +279,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => {
const databaseUploadSpy = await mockHttpRequests(201); const databaseUploadSpy = await mockHttpRequests(201);
const loggedMessages = [] as LoggedMessage[]; const loggedMessages = [] as LoggedMessage[];
await uploadDatabases( await cleanupAndUploadDatabases(
testRepoName, testRepoName,
getCodeQL(), getCodeQL(),
getTestConfig(tmpDir), getTestConfig(tmpDir),
@@ -281,6 +288,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => {
url: "https://tenant.ghe.com", url: "https://tenant.ghe.com",
apiURL: undefined, apiURL: undefined,
}, },
createFeatures([]),
getRecordingLogger(loggedMessages), getRecordingLogger(loggedMessages),
); );
t.assert( t.assert(

View File

@@ -5,17 +5,20 @@ import { AnalysisKind } from "./analyses";
import { getApiClient, GitHubApiDetails } from "./api-client"; import { getApiClient, GitHubApiDetails } from "./api-client";
import { type CodeQL } from "./codeql"; import { type CodeQL } from "./codeql";
import { Config } from "./config-utils"; import { Config } from "./config-utils";
import { Feature, FeatureEnablement } from "./feature-flags";
import * as gitUtils from "./git-utils"; import * as gitUtils from "./git-utils";
import { Logger, withGroupAsync } from "./logging"; import { Logger, withGroupAsync } from "./logging";
import { OverlayDatabaseMode } from "./overlay-database-utils";
import { RepositoryNwo } from "./repository"; import { RepositoryNwo } from "./repository";
import * as util from "./util"; import * as util from "./util";
import { bundleDb, parseGitHubUrl } from "./util"; import { bundleDb, CleanupLevel, parseGitHubUrl } from "./util";
export async function uploadDatabases( export async function cleanupAndUploadDatabases(
repositoryNwo: RepositoryNwo, repositoryNwo: RepositoryNwo,
codeql: CodeQL, codeql: CodeQL,
config: Config, config: Config,
apiDetails: GitHubApiDetails, apiDetails: GitHubApiDetails,
features: FeatureEnablement,
logger: Logger, logger: Logger,
): Promise<void> { ): Promise<void> {
if (actionsUtil.getRequiredInput("upload-database") !== "true") { if (actionsUtil.getRequiredInput("upload-database") !== "true") {
@@ -50,10 +53,16 @@ export async function uploadDatabases(
return; return;
} }
const cleanupLevel =
config.overlayDatabaseMode === OverlayDatabaseMode.OverlayBase &&
(await features.getValue(Feature.UploadOverlayDbToApi))
? CleanupLevel.Overlay
: CleanupLevel.Clear;
// Clean up the database, since intermediate results may still be written to the // Clean up the database, since intermediate results may still be written to the
// database if there is high RAM pressure. // database if there is high RAM pressure.
await withGroupAsync("Cleaning up databases", async () => { await withGroupAsync("Cleaning up databases", async () => {
await codeql.databaseCleanupCluster(config, "clear"); await codeql.databaseCleanupCluster(config, cleanupLevel);
}); });
const client = getApiClient(); const client = getApiClient();

View File

@@ -77,6 +77,7 @@ export enum Feature {
OverlayAnalysisSwift = "overlay_analysis_swift", OverlayAnalysisSwift = "overlay_analysis_swift",
PythonDefaultIsToNotExtractStdlib = "python_default_is_to_not_extract_stdlib", PythonDefaultIsToNotExtractStdlib = "python_default_is_to_not_extract_stdlib",
QaTelemetryEnabled = "qa_telemetry_enabled", QaTelemetryEnabled = "qa_telemetry_enabled",
UploadOverlayDbToApi = "upload_overlay_db_to_api",
UseRepositoryProperties = "use_repository_properties", UseRepositoryProperties = "use_repository_properties",
ValidateDbConfig = "validate_db_config", ValidateDbConfig = "validate_db_config",
} }
@@ -166,6 +167,11 @@ export const featureConfig: Record<
legacyApi: true, legacyApi: true,
minimumVersion: undefined, minimumVersion: undefined,
}, },
[Feature.JavaMinimizeDependencyJars]: {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0",
},
[Feature.OverlayAnalysis]: { [Feature.OverlayAnalysis]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS",
@@ -277,21 +283,21 @@ export const featureConfig: Record<
minimumVersion: undefined, minimumVersion: undefined,
toolsFeature: ToolsFeature.PythonDefaultIsToNotExtractStdlib, toolsFeature: ToolsFeature.PythonDefaultIsToNotExtractStdlib,
}, },
[Feature.UseRepositoryProperties]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: undefined,
},
[Feature.QaTelemetryEnabled]: { [Feature.QaTelemetryEnabled]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_QA_TELEMETRY", envVar: "CODEQL_ACTION_QA_TELEMETRY",
legacyApi: true, legacyApi: true,
minimumVersion: undefined, minimumVersion: undefined,
}, },
[Feature.JavaMinimizeDependencyJars]: { [Feature.UploadOverlayDbToApi]: {
defaultValue: false, defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API",
minimumVersion: "2.23.0", minimumVersion: undefined,
},
[Feature.UseRepositoryProperties]: {
defaultValue: false,
envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES",
minimumVersion: undefined,
}, },
[Feature.ValidateDbConfig]: { [Feature.ValidateDbConfig]: {
defaultValue: false, defaultValue: false,

View File

@@ -16,6 +16,7 @@ import { type Config } from "./config-utils";
import { getCommitOid, getFileOidsUnderPath } from "./git-utils"; import { getCommitOid, getFileOidsUnderPath } from "./git-utils";
import { Logger, withGroupAsync } from "./logging"; import { Logger, withGroupAsync } from "./logging";
import { import {
CleanupLevel,
getErrorMessage, getErrorMessage,
isInTestMode, isInTestMode,
tryGetFolderBytes, tryGetFolderBytes,
@@ -204,7 +205,7 @@ export function checkOverlayBaseDatabase(
* @returns A promise that resolves to true if the upload was performed and * @returns A promise that resolves to true if the upload was performed and
* successfully completed, or false otherwise * successfully completed, or false otherwise
*/ */
export async function uploadOverlayBaseDatabaseToCache( export async function cleanupAndUploadOverlayBaseDatabaseToCache(
codeql: CodeQL, codeql: CodeQL,
config: Config, config: Config,
logger: Logger, logger: Logger,
@@ -242,7 +243,7 @@ export async function uploadOverlayBaseDatabaseToCache(
// Clean up the database using the overlay cleanup level. // Clean up the database using the overlay cleanup level.
await withGroupAsync("Cleaning up databases", async () => { await withGroupAsync("Cleaning up databases", async () => {
await codeql.databaseCleanupCluster(config, "overlay"); await codeql.databaseCleanupCluster(config, CleanupLevel.Overlay);
}); });
const dbLocation = config.dbLocation; const dbLocation = config.dbLocation;

View File

@@ -1314,3 +1314,8 @@ export function unsafeEntriesInvariant<T extends Record<string, any>>(
([_, val]) => val !== undefined, ([_, val]) => val !== undefined,
) as Array<[keyof T, Exclude<T[keyof T], undefined>]>; ) as Array<[keyof T, Exclude<T[keyof T], undefined>]>;
} }
export enum CleanupLevel {
Clear = "clear",
Overlay = "overlay",
}