diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ccc60273..3ec876d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ See the [releases page](https://github.com/github/codeql-action/releases) for th No user facing changes. +## 4.31.4 - 18 Nov 2025 + +No user facing changes. + ## 4.31.3 - 13 Nov 2025 - CodeQL Action v3 will be deprecated in December 2026. The Action now logs a warning for customers who are running v3 but could be running v4. For more information, see [Upcoming deprecation of CodeQL Action v3](https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/). diff --git a/lib/analyze-action-post.js b/lib/analyze-action-post.js index 4f4f64b0a..13589f496 100644 --- a/lib/analyze-action-post.js +++ b/lib/analyze-action-post.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -119945,7 +119945,7 @@ function withGroup(groupName, f) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -120071,6 +120071,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -120182,21 +120187,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -120209,6 +120214,8 @@ var featureConfig = { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/analyze-action.js b/lib/analyze-action.js index ff0b4db29..5781e6941 100644 --- a/lib/analyze-action.js +++ b/lib/analyze-action.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -88450,7 +88450,7 @@ function formatDuration(durationMs) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -88522,7 +88522,7 @@ function checkOverlayBaseDatabase(config, logger, warningPrefix) { } return true; } -async function uploadOverlayBaseDatabaseToCache(codeql, config, logger) { +async function cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger) { const overlayDatabaseMode = config.overlayDatabaseMode; if (overlayDatabaseMode !== "overlay-base" /* OverlayBase */) { logger.debug( @@ -88551,7 +88551,7 @@ async function uploadOverlayBaseDatabaseToCache(codeql, config, logger) { return false; } await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "overlay"); + await codeql.databaseCleanupCluster(config, "overlay" /* Overlay */); }); const dbLocation = config.dbLocation; const databaseSizeBytes = await tryGetFolderBytes(dbLocation, logger); @@ -88692,6 +88692,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -88803,21 +88808,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -89368,6 +89373,8 @@ async function cachePrefix(codeql, language) { } // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, @@ -91664,7 +91671,7 @@ async function warnIfGoInstalledAfterInit(config, logger) { // src/database-upload.ts 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") { logger.debug("Database upload disabled in workflow. Skipping upload."); return; @@ -91687,8 +91694,9 @@ async function uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger logger.debug("Not analyzing default branch. Skipping upload."); 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 codeql.databaseCleanupCluster(config, "clear"); + await codeql.databaseCleanupCluster(config, cleanupLevel); }); const client = getApiClient(); const uploadsUrl = new URL(parseGitHubUrl(apiDetails.url)); @@ -94045,8 +94053,15 @@ async function run() { } else { logger.info("Not uploading results"); } - await uploadOverlayBaseDatabaseToCache(codeql, config, logger); - await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); + await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); + await cleanupAndUploadDatabases( + repositoryNwo, + codeql, + config, + apiDetails, + features, + logger + ); const trapCacheUploadStartTime = import_perf_hooks3.performance.now(); didUploadTrapCaches = await uploadTrapCaches(codeql, config, logger); trapCacheUploadTime = import_perf_hooks3.performance.now() - trapCacheUploadStartTime; diff --git a/lib/autobuild-action.js b/lib/autobuild-action.js index 725f9c8e1..f286a07cf 100644 --- a/lib/autobuild-action.js +++ b/lib/autobuild-action.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -83887,7 +83887,7 @@ function getActionsLogger() { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -84011,6 +84011,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -84122,21 +84127,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -84414,6 +84419,8 @@ var GitHubFeatureFlags = class { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/init-action-post.js b/lib/init-action-post.js index 298746d93..fdc23d247 100644 --- a/lib/init-action-post.js +++ b/lib/init-action-post.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -123323,7 +123323,7 @@ function formatDuration(durationMs) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -123452,6 +123452,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -123563,21 +123568,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -123873,6 +123878,8 @@ ${jsonContents}` var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/init-action.js b/lib/init-action.js index c3199ca3f..6f826febd 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -85852,7 +85852,7 @@ function formatDuration(durationMs) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -86106,6 +86106,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -86217,21 +86222,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -86651,6 +86656,8 @@ async function cachePrefix(codeql, language) { } // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; async function getSupportedLanguageMap(codeql, logger) { const resolveSupportedLanguagesUsingCli = await codeql.supportsFeature( "builtinExtractorsSpecifyDefaultQueries" /* BuiltinExtractorsSpecifyDefaultQueries */ @@ -86923,18 +86930,28 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b languages, codeScanningConfig )) { - if (isAnalyzingPullRequest()) { - overlayDatabaseMode = "overlay" /* Overlay */; - useOverlayDatabaseCaching = true; + const diskUsage = await checkDiskUsage(logger); + if (diskUsage === void 0 || diskUsage.numAvailableBytes < OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES) { + const diskSpaceMb = diskUsage === void 0 ? 0 : Math.round(diskUsage.numAvailableBytes / 1e6); + overlayDatabaseMode = "none" /* None */; + useOverlayDatabaseCaching = false; logger.info( - `Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing a pull request.` - ); - } else if (await isAnalyzingDefaultBranch()) { - overlayDatabaseMode = "overlay-base" /* OverlayBase */; - useOverlayDatabaseCaching = true; - logger.info( - `Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing the default branch.` + `Setting overlay database mode to ${overlayDatabaseMode} due to insufficient disk space (${diskSpaceMb} MB).` ); + } else { + if (isAnalyzingPullRequest()) { + overlayDatabaseMode = "overlay" /* Overlay */; + useOverlayDatabaseCaching = true; + logger.info( + `Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing a pull request.` + ); + } else if (await isAnalyzingDefaultBranch()) { + overlayDatabaseMode = "overlay-base" /* OverlayBase */; + useOverlayDatabaseCaching = true; + logger.info( + `Setting overlay database mode to ${overlayDatabaseMode} with caching because we are analyzing the default branch.` + ); + } } } const nonOverlayAnalysis = { diff --git a/lib/resolve-environment-action.js b/lib/resolve-environment-action.js index 3a4dd9efd..48ebce48f 100644 --- a/lib/resolve-environment-action.js +++ b/lib/resolve-environment-action.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -83880,7 +83880,7 @@ function getActionsLogger() { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -84002,6 +84002,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -84113,21 +84118,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -84140,6 +84145,8 @@ var featureConfig = { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/setup-codeql-action.js b/lib/setup-codeql-action.js index eebe3d104..cad0195ad 100644 --- a/lib/setup-codeql-action.js +++ b/lib/setup-codeql-action.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -83789,7 +83789,7 @@ function formatDuration(durationMs) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -83914,6 +83914,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -84025,21 +84030,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -84585,6 +84590,8 @@ var PACK_IDENTIFIER_PATTERN = (function() { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/start-proxy-action-post.js b/lib/start-proxy-action-post.js index 59854ff22..cdac66bef 100644 --- a/lib/start-proxy-action-post.js +++ b/lib/start-proxy-action-post.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -119414,7 +119414,7 @@ function getActionsLogger() { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; @@ -119477,6 +119477,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -119588,21 +119593,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -119615,6 +119620,8 @@ var featureConfig = { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/start-proxy-action.js b/lib/start-proxy-action.js index e23d99449..3693c9670 100644 --- a/lib/start-proxy-action.js +++ b/lib/start-proxy-action.js @@ -47285,7 +47285,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -47334,7 +47334,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -47345,7 +47345,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -47355,7 +47355,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -99967,7 +99967,7 @@ async function getRef() { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; @@ -100030,6 +100030,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -100141,21 +100146,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -100168,6 +100173,8 @@ var featureConfig = { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/upload-lib.js b/lib/upload-lib.js index 6f5d62a8c..938245c21 100644 --- a/lib/upload-lib.js +++ b/lib/upload-lib.js @@ -28924,7 +28924,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -28973,7 +28973,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -28984,7 +28984,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -28994,7 +28994,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -86944,7 +86944,7 @@ function formatDuration(durationMs) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -87067,6 +87067,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -87178,21 +87183,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -87223,6 +87228,8 @@ ${jsonContents}` var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/upload-sarif-action-post.js b/lib/upload-sarif-action-post.js index 8f64f60ef..87ef62a45 100644 --- a/lib/upload-sarif-action-post.js +++ b/lib/upload-sarif-action-post.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -119576,7 +119576,7 @@ function withGroup(groupName, f) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; @@ -119643,6 +119643,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -119754,21 +119759,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -119781,6 +119786,8 @@ var featureConfig = { var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/lib/upload-sarif-action.js b/lib/upload-sarif-action.js index 8a115e6b4..79778f00d 100644 --- a/lib/upload-sarif-action.js +++ b/lib/upload-sarif-action.js @@ -27627,7 +27627,7 @@ var require_package = __commonJS({ "package.json"(exports2, module2) { module2.exports = { name: "codeql", - version: "4.31.4", + version: "4.31.5", private: true, description: "CodeQL action", scripts: { @@ -27676,7 +27676,7 @@ var require_package = __commonJS({ }, devDependencies: { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -27687,7 +27687,7 @@ var require_package = __commonJS({ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", ava: "^6.4.1", @@ -27697,7 +27697,7 @@ var require_package = __commonJS({ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", glob: "^11.1.0", nock: "^14.0.10", @@ -86739,7 +86739,7 @@ function formatDuration(durationMs) { } // src/overlay-database-utils.ts -var CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +var CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB = 7500; var OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_BYTES = OVERLAY_BASE_DATABASE_MAX_UPLOAD_SIZE_MB * 1e6; async function writeBaseDatabaseOidsFile(config, sourceRoot) { @@ -86864,6 +86864,11 @@ var featureConfig = { legacyApi: true, minimumVersion: void 0 }, + ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0" + }, ["overlay_analysis" /* OverlayAnalysis */]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -86975,21 +86980,21 @@ var featureConfig = { minimumVersion: void 0, toolsFeature: "pythonDefaultIsToNotExtractStdlib" /* PythonDefaultIsToNotExtractStdlib */ }, - ["use_repository_properties" /* UseRepositoryProperties */]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: void 0 - }, ["qa_telemetry_enabled" /* QaTelemetryEnabled */]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: void 0 }, - ["java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */]: { + ["upload_overlay_db_to_api" /* UploadOverlayDbToApi */]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0" + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: void 0 + }, + ["use_repository_properties" /* UseRepositoryProperties */]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: void 0 }, ["validate_db_config" /* ValidateDbConfig */]: { defaultValue: false, @@ -87305,6 +87310,8 @@ ${jsonContents}` var actionsCache2 = __toESM(require_cache3()); // src/config-utils.ts +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 2e4; +var OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1e6; var OVERLAY_ANALYSIS_FEATURES = { actions: "overlay_analysis_actions" /* OverlayAnalysisActions */, cpp: "overlay_analysis_cpp" /* OverlayAnalysisCpp */, diff --git a/package-lock.json b/package-lock.json index b8e9648ed..3ee4a5b89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeql", - "version": "4.31.4", + "version": "4.31.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeql", - "version": "4.31.4", + "version": "4.31.5", "license": "MIT", "dependencies": { "@actions/artifact": "^4.0.0", @@ -34,7 +34,7 @@ }, "devDependencies": { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -45,7 +45,7 @@ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", "ava": "^6.4.1", @@ -55,7 +55,7 @@ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", "glob": "^11.1.0", "nock": "^14.0.10", @@ -1415,16 +1415,16 @@ } }, "node_modules/@eslint/compat": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", - "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.0.tgz", + "integrity": "sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0" + "@eslint/core": "^1.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "peerDependencies": { "eslint": "^8.40 || 9" @@ -1436,16 +1436,16 @@ } }, "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.0.0.tgz", + "integrity": "sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/eslintrc": { @@ -2345,9 +2345,9 @@ "license": "MIT" }, "node_modules/@types/sinon": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", - "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-21.0.0.tgz", + "integrity": "sha512-+oHKZ0lTI+WVLxx1IbJDNmReQaIsQJjN2e7UUrJHEeByG7bFeKJYsv1E75JxTQ9QKJDp21bAa/0W2Xo4srsDnw==", "dev": true, "license": "MIT", "dependencies": { @@ -4813,6 +4813,40 @@ "eslint": "^8 || ^9" } }, + "node_modules/eslint-plugin-github/node_modules/@eslint/compat": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.40 || 9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-github/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/eslint-plugin-github/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -4918,9 +4952,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "61.1.12", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.1.12.tgz", - "integrity": "sha512-CGJTnltz7ovwOW33xYhvA4fMuriPZpR5OnJf09SV28iU2IUpJwMd6P7zvUK8Sl56u5YzO+1F9m46wpSs2dufEw==", + "version": "61.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.2.1.tgz", + "integrity": "sha512-Htacti3dbkNm4rlp/Bk9lqhv+gi6US9jyN22yaJ42G6wbteiTbNLChQwi25jr/BN+NOzDWhZHvCDdrhX0F8dXQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/package.json b/package.json index a4064dea9..61317b90a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codeql", - "version": "4.31.4", + "version": "4.31.5", "private": true, "description": "CodeQL action", "scripts": { @@ -49,7 +49,7 @@ }, "devDependencies": { "@ava/typescript": "6.0.0", - "@eslint/compat": "^1.4.1", + "@eslint/compat": "^2.0.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", @@ -60,7 +60,7 @@ "@types/node": "^20.19.9", "@types/node-forge": "^1.3.14", "@types/semver": "^7.7.1", - "@types/sinon": "^17.0.4", + "@types/sinon": "^21.0.0", "@typescript-eslint/eslint-plugin": "^8.46.4", "@typescript-eslint/parser": "^8.41.0", "ava": "^6.4.1", @@ -70,7 +70,7 @@ "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-github": "^5.1.8", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jsdoc": "^61.1.12", + "eslint-plugin-jsdoc": "^61.2.1", "eslint-plugin-no-async-foreach": "^0.1.1", "glob": "^11.1.0", "nock": "^14.0.10", diff --git a/src/analyze-action.ts b/src/analyze-action.ts index 3ab1dd132..abbf23972 100644 --- a/src/analyze-action.ts +++ b/src/analyze-action.ts @@ -25,7 +25,7 @@ import { isCodeQualityEnabled, isCodeScanningEnabled, } from "./config-utils"; -import { uploadDatabases } from "./database-upload"; +import { cleanupAndUploadDatabases } from "./database-upload"; import { DependencyCacheUploadStatusReport, uploadDependencyCaches, @@ -35,7 +35,7 @@ import { EnvVar } from "./environment"; import { Feature, Features } from "./feature-flags"; import { KnownLanguage } from "./languages"; import { getActionsLogger, Logger } from "./logging"; -import { uploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; +import { cleanupAndUploadOverlayBaseDatabaseToCache } from "./overlay-database-utils"; import { getRepositoryNwo } from "./repository"; import * as statusReport from "./status-report"; import { @@ -417,12 +417,21 @@ async function run() { } // 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. - await uploadOverlayBaseDatabaseToCache(codeql, config, logger); + // Note: Take care with the ordering of this call since databases may be cleaned up + // at the `overlay` level. + await cleanupAndUploadOverlayBaseDatabaseToCache(codeql, config, logger); // Possibly upload the database bundles for remote queries. - // If databases are to be uploaded, they will first be cleaned up at the clear level. - await uploadDatabases(repositoryNwo, codeql, config, apiDetails, logger); + // Note: Take care with the ordering of this call since databases may be cleaned up + // at the `overlay` or `clear` level. + await cleanupAndUploadDatabases( + repositoryNwo, + codeql, + config, + apiDetails, + features, + logger, + ); // Possibly upload the TRAP caches for later re-use const trapCacheUploadStartTime = performance.now(); diff --git a/src/codeql.ts b/src/codeql.ts index 17db0ef2c..2b86d843f 100644 --- a/src/codeql.ts +++ b/src/codeql.ts @@ -35,7 +35,7 @@ import { ToolsDownloadStatusReport } from "./tools-download"; import { ToolsFeature, isSupportedToolsFeature } from "./tools-features"; import { shouldEnableIndirectTracing } from "./tracer-config"; import * as util from "./util"; -import { BuildMode, getErrorMessage } from "./util"; +import { BuildMode, CleanupLevel, getErrorMessage } from "./util"; type Options = Array; @@ -141,7 +141,10 @@ export interface CodeQL { /** * Clean up all the databases within a database cluster. */ - databaseCleanupCluster(config: Config, cleanupLevel: string): Promise; + databaseCleanupCluster( + config: Config, + cleanupLevel: CleanupLevel, + ): Promise; /** * Run 'codeql database bundle'. */ @@ -878,7 +881,7 @@ async function getCodeQLForCmd( }, async databaseCleanupCluster( config: Config, - cleanupLevel: string, + cleanupLevel: CleanupLevel, ): Promise { const cacheCleanupFlag = (await util.codeQlVersionAtLeast( this, diff --git a/src/config-utils.test.ts b/src/config-utils.test.ts index 906336d26..7f991ea24 100644 --- a/src/config-utils.test.ts +++ b/src/config-utils.test.ts @@ -37,7 +37,9 @@ import { ConfigurationError, withTmpDir, BuildMode, + DiskUsage, } from "./util"; +import * as util from "./util"; setupTests(test); @@ -976,6 +978,7 @@ interface OverlayDatabaseModeTestSetup { codeqlVersion: string; gitRoot: string | undefined; codeScanningConfig: configUtils.UserConfig; + diskUsage: DiskUsage | undefined; } const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = { @@ -988,6 +991,10 @@ const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = { codeqlVersion: CODEQL_OVERLAY_MINIMUM_VERSION, gitRoot: "/some/git/root", codeScanningConfig: {}, + diskUsage: { + numAvailableBytes: 50_000_000_000, + numTotalBytes: 100_000_000_000, + }, }; const getOverlayDatabaseModeMacro = test.macro({ @@ -1020,6 +1027,8 @@ const getOverlayDatabaseModeMacro = test.macro({ setup.overlayDatabaseEnvVar; } + sinon.stub(util, "checkDiskUsage").resolves(setup.diskUsage); + // Mock feature flags const features = createFeatures(setup.features); @@ -1177,6 +1186,45 @@ test( }, ); +test( + getOverlayDatabaseModeMacro, + "No overlay-base database on default branch if runner disk space is too low", + { + languages: [KnownLanguage.javascript], + features: [ + Feature.OverlayAnalysis, + Feature.OverlayAnalysisCodeScanningJavascript, + ], + isDefaultBranch: true, + diskUsage: { + numAvailableBytes: 1_000_000_000, + numTotalBytes: 100_000_000_000, + }, + }, + { + overlayDatabaseMode: OverlayDatabaseMode.None, + useOverlayDatabaseCaching: false, + }, +); + +test( + getOverlayDatabaseModeMacro, + "No overlay-base database on default branch if we can't determine runner disk space", + { + languages: [KnownLanguage.javascript], + features: [ + Feature.OverlayAnalysis, + Feature.OverlayAnalysisCodeScanningJavascript, + ], + isDefaultBranch: true, + diskUsage: undefined, + }, + { + overlayDatabaseMode: OverlayDatabaseMode.None, + useOverlayDatabaseCaching: false, + }, +); + test( getOverlayDatabaseModeMacro, "No overlay-base database on default branch when code-scanning feature enabled with disable-default-queries", @@ -1347,6 +1395,45 @@ test( }, ); +test( + getOverlayDatabaseModeMacro, + "No overlay analysis on PR if runner disk space is too low", + { + languages: [KnownLanguage.javascript], + features: [ + Feature.OverlayAnalysis, + Feature.OverlayAnalysisCodeScanningJavascript, + ], + isPullRequest: true, + diskUsage: { + numAvailableBytes: 1_000_000_000, + numTotalBytes: 100_000_000_000, + }, + }, + { + overlayDatabaseMode: OverlayDatabaseMode.None, + useOverlayDatabaseCaching: false, + }, +); + +test( + getOverlayDatabaseModeMacro, + "No overlay analysis on PR if we can't determine runner disk space", + { + languages: [KnownLanguage.javascript], + features: [ + Feature.OverlayAnalysis, + Feature.OverlayAnalysisCodeScanningJavascript, + ], + isPullRequest: true, + diskUsage: undefined, + }, + { + overlayDatabaseMode: OverlayDatabaseMode.None, + useOverlayDatabaseCaching: false, + }, +); + test( getOverlayDatabaseModeMacro, "No overlay analysis on PR when code-scanning feature enabled with disable-default-queries", @@ -1481,6 +1568,19 @@ test( }, ); +test( + getOverlayDatabaseModeMacro, + "Overlay PR analysis by env on a runner with low disk space", + { + overlayDatabaseEnvVar: "overlay", + diskUsage: { numAvailableBytes: 0, numTotalBytes: 100_000_000_000 }, + }, + { + overlayDatabaseMode: OverlayDatabaseMode.Overlay, + useOverlayDatabaseCaching: false, + }, +); + test( getOverlayDatabaseModeMacro, "Overlay PR analysis by feature flag", diff --git a/src/config-utils.ts b/src/config-utils.ts index 016bc4868..ee9d41198 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -43,10 +43,22 @@ import { codeQlVersionAtLeast, cloneObject, isDefined, + checkDiskUsage, } from "./util"; export * from "./config/db-config"; +/** + * The minimum available disk space (in MB) required to perform overlay analysis. + * If the available disk space on the runner is below the threshold when deciding + * whether to perform overlay analysis, then the action will not perform overlay + * analysis unless overlay analysis has been explicitly enabled via environment + * variable. + */ +const OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB = 20000; +const OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES = + OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_MB * 1_000_000; + export type RegistryConfigWithCredentials = RegistryConfigNoCredentials & { // Token to use when downloading packs from this registry. token: string; @@ -679,20 +691,37 @@ export async function getOverlayDatabaseMode( codeScanningConfig, ) ) { - if (isAnalyzingPullRequest()) { - overlayDatabaseMode = OverlayDatabaseMode.Overlay; - useOverlayDatabaseCaching = true; + const diskUsage = await checkDiskUsage(logger); + if ( + diskUsage === undefined || + diskUsage.numAvailableBytes < OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES + ) { + const diskSpaceMb = + diskUsage === undefined + ? 0 + : Math.round(diskUsage.numAvailableBytes / 1_000_000); + overlayDatabaseMode = OverlayDatabaseMode.None; + useOverlayDatabaseCaching = false; logger.info( `Setting overlay database mode to ${overlayDatabaseMode} ` + - "with caching because we are analyzing a pull request.", - ); - } else if (await isAnalyzingDefaultBranch()) { - overlayDatabaseMode = OverlayDatabaseMode.OverlayBase; - useOverlayDatabaseCaching = true; - logger.info( - `Setting overlay database mode to ${overlayDatabaseMode} ` + - "with caching because we are analyzing the default branch.", + `due to insufficient disk space (${diskSpaceMb} MB).`, ); + } else { + if (isAnalyzingPullRequest()) { + overlayDatabaseMode = OverlayDatabaseMode.Overlay; + useOverlayDatabaseCaching = true; + logger.info( + `Setting overlay database mode to ${overlayDatabaseMode} ` + + "with caching because we are analyzing a pull request.", + ); + } else if (await isAnalyzingDefaultBranch()) { + overlayDatabaseMode = OverlayDatabaseMode.OverlayBase; + useOverlayDatabaseCaching = true; + logger.info( + `Setting overlay database mode to ${overlayDatabaseMode} ` + + "with caching because we are analyzing the default branch.", + ); + } } } diff --git a/src/database-upload.test.ts b/src/database-upload.test.ts index 6c986fb7f..e07ff1da2 100644 --- a/src/database-upload.test.ts +++ b/src/database-upload.test.ts @@ -10,11 +10,12 @@ import { GitHubApiDetails } from "./api-client"; import * as apiClient from "./api-client"; import { createStubCodeQL } from "./codeql"; import { Config } from "./config-utils"; -import { uploadDatabases } from "./database-upload"; +import { cleanupAndUploadDatabases } from "./database-upload"; import * as gitUtils from "./git-utils"; import { KnownLanguage } from "./languages"; import { RepositoryNwo } from "./repository"; import { + createFeatures, createTestConfig, getRecordingLogger, LoggedMessage, @@ -91,11 +92,12 @@ test("Abort database upload if 'upload-database' input set to false", async (t) sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(true); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -121,7 +123,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled", await mockHttpRequests(201); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), { @@ -129,6 +131,7 @@ test("Abort database upload if 'analysis-kinds: code-scanning' is not enabled", analysisKinds: [AnalysisKind.CodeQuality], }, testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -155,11 +158,12 @@ test("Abort database upload if running against GHES", async (t) => { config.gitHubVersion = { type: GitHubVariant.GHES, version: "3.0" }; const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), config, testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -183,11 +187,12 @@ test("Abort database upload if not analyzing default branch", async (t) => { sinon.stub(gitUtils, "isAnalyzingDefaultBranch").resolves(false); const loggedMessages = []; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -212,11 +217,12 @@ test("Don't crash if uploading a database fails", async (t) => { await mockHttpRequests(500); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); @@ -243,11 +249,12 @@ test("Successfully uploading a database to github.com", async (t) => { await mockHttpRequests(201); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), testApiDetails, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( @@ -272,7 +279,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => { const databaseUploadSpy = await mockHttpRequests(201); const loggedMessages = [] as LoggedMessage[]; - await uploadDatabases( + await cleanupAndUploadDatabases( testRepoName, getCodeQL(), getTestConfig(tmpDir), @@ -281,6 +288,7 @@ test("Successfully uploading a database to GHEC-DR", async (t) => { url: "https://tenant.ghe.com", apiURL: undefined, }, + createFeatures([]), getRecordingLogger(loggedMessages), ); t.assert( diff --git a/src/database-upload.ts b/src/database-upload.ts index 69175178c..d99df14c3 100644 --- a/src/database-upload.ts +++ b/src/database-upload.ts @@ -5,17 +5,20 @@ import { AnalysisKind } from "./analyses"; import { getApiClient, GitHubApiDetails } from "./api-client"; import { type CodeQL } from "./codeql"; import { Config } from "./config-utils"; +import { Feature, FeatureEnablement } from "./feature-flags"; import * as gitUtils from "./git-utils"; import { Logger, withGroupAsync } from "./logging"; +import { OverlayDatabaseMode } from "./overlay-database-utils"; import { RepositoryNwo } from "./repository"; 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, codeql: CodeQL, config: Config, apiDetails: GitHubApiDetails, + features: FeatureEnablement, logger: Logger, ): Promise { if (actionsUtil.getRequiredInput("upload-database") !== "true") { @@ -50,10 +53,16 @@ export async function uploadDatabases( 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 // database if there is high RAM pressure. await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "clear"); + await codeql.databaseCleanupCluster(config, cleanupLevel); }); const client = getApiClient(); diff --git a/src/feature-flags.ts b/src/feature-flags.ts index 133496979..10e2e296c 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -77,6 +77,7 @@ export enum Feature { OverlayAnalysisSwift = "overlay_analysis_swift", PythonDefaultIsToNotExtractStdlib = "python_default_is_to_not_extract_stdlib", QaTelemetryEnabled = "qa_telemetry_enabled", + UploadOverlayDbToApi = "upload_overlay_db_to_api", UseRepositoryProperties = "use_repository_properties", ValidateDbConfig = "validate_db_config", } @@ -166,6 +167,11 @@ export const featureConfig: Record< legacyApi: true, minimumVersion: undefined, }, + [Feature.JavaMinimizeDependencyJars]: { + defaultValue: false, + envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", + minimumVersion: "2.23.0", + }, [Feature.OverlayAnalysis]: { defaultValue: false, envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS", @@ -277,21 +283,21 @@ export const featureConfig: Record< minimumVersion: undefined, toolsFeature: ToolsFeature.PythonDefaultIsToNotExtractStdlib, }, - [Feature.UseRepositoryProperties]: { - defaultValue: false, - envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", - minimumVersion: undefined, - }, [Feature.QaTelemetryEnabled]: { defaultValue: false, envVar: "CODEQL_ACTION_QA_TELEMETRY", legacyApi: true, minimumVersion: undefined, }, - [Feature.JavaMinimizeDependencyJars]: { + [Feature.UploadOverlayDbToApi]: { defaultValue: false, - envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS", - minimumVersion: "2.23.0", + envVar: "CODEQL_ACTION_UPLOAD_OVERLAY_DB_TO_API", + minimumVersion: undefined, + }, + [Feature.UseRepositoryProperties]: { + defaultValue: false, + envVar: "CODEQL_ACTION_USE_REPOSITORY_PROPERTIES", + minimumVersion: undefined, }, [Feature.ValidateDbConfig]: { defaultValue: false, diff --git a/src/overlay-database-utils.ts b/src/overlay-database-utils.ts index 71990ccc3..a340bfe2b 100644 --- a/src/overlay-database-utils.ts +++ b/src/overlay-database-utils.ts @@ -16,6 +16,7 @@ import { type Config } from "./config-utils"; import { getCommitOid, getFileOidsUnderPath } from "./git-utils"; import { Logger, withGroupAsync } from "./logging"; import { + CleanupLevel, getErrorMessage, isInTestMode, tryGetFolderBytes, @@ -28,7 +29,7 @@ export enum OverlayDatabaseMode { None = "none", } -export const CODEQL_OVERLAY_MINIMUM_VERSION = "2.22.4"; +export const CODEQL_OVERLAY_MINIMUM_VERSION = "2.23.5"; /** * The maximum (uncompressed) size of the overlay base database that we will @@ -204,7 +205,7 @@ function checkOverlayBaseDatabase( * @returns A promise that resolves to true if the upload was performed and * successfully completed, or false otherwise */ -export async function uploadOverlayBaseDatabaseToCache( +export async function cleanupAndUploadOverlayBaseDatabaseToCache( codeql: CodeQL, config: Config, logger: Logger, @@ -242,7 +243,7 @@ export async function uploadOverlayBaseDatabaseToCache( // Clean up the database using the overlay cleanup level. await withGroupAsync("Cleaning up databases", async () => { - await codeql.databaseCleanupCluster(config, "overlay"); + await codeql.databaseCleanupCluster(config, CleanupLevel.Overlay); }); const dbLocation = config.dbLocation; diff --git a/src/util.ts b/src/util.ts index fe8604b46..aefcc5a2a 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1231,3 +1231,8 @@ export function unsafeEntriesInvariant>( ([_, val]) => val !== undefined, ) as Array<[keyof T, Exclude]>; } + +export enum CleanupLevel { + Clear = "clear", + Overlay = "overlay", +}