mirror of
https://github.com/github/codeql-action.git
synced 2025-12-06 07:48:17 +08:00
Merge pull request #3333 from github/kaspersv/overlay-no-resource-checks-option
Overlay: Add feature flag to skip resource checks
This commit is contained in:
5
lib/analyze-action-post.js
generated
5
lib/analyze-action-post.js
generated
@@ -120186,6 +120186,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/analyze-action.js
generated
5
lib/analyze-action.js
generated
@@ -88807,6 +88807,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/autobuild-action.js
generated
5
lib/autobuild-action.js
generated
@@ -84126,6 +84126,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/init-action-post.js
generated
5
lib/init-action-post.js
generated
@@ -123567,6 +123567,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
42
lib/init-action.js
generated
42
lib/init-action.js
generated
@@ -86221,6 +86221,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
@@ -86920,6 +86925,24 @@ async function isOverlayAnalysisFeatureEnabled(features, codeql, languages, code
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
async function runnerSupportsOverlayAnalysis(ramInput, logger) {
|
||||||
|
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);
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${"none" /* None */} due to insufficient disk space (${diskSpaceMb} MB).`
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const memoryFlagValue = getMemoryFlagValue(ramInput, logger);
|
||||||
|
if (memoryFlagValue < 5 * 1024) {
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${"none" /* None */} due to insufficient memory for CodeQL analysis (${memoryFlagValue} MB).`
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, buildMode, ramInput, codeScanningConfig, logger) {
|
async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, buildMode, ramInput, codeScanningConfig, logger) {
|
||||||
let overlayDatabaseMode = "none" /* None */;
|
let overlayDatabaseMode = "none" /* None */;
|
||||||
let useOverlayDatabaseCaching = false;
|
let useOverlayDatabaseCaching = false;
|
||||||
@@ -86935,21 +86958,12 @@ async function getOverlayDatabaseMode(codeql, features, languages, sourceRoot, b
|
|||||||
languages,
|
languages,
|
||||||
codeScanningConfig
|
codeScanningConfig
|
||||||
)) {
|
)) {
|
||||||
const diskUsage = await checkDiskUsage(logger);
|
const performResourceChecks = !await features.getValue(
|
||||||
const memoryFlagValue = getMemoryFlagValue(ramInput, logger);
|
"overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */,
|
||||||
if (diskUsage === void 0 || diskUsage.numAvailableBytes < OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES) {
|
codeql
|
||||||
const diskSpaceMb = diskUsage === void 0 ? 0 : Math.round(diskUsage.numAvailableBytes / 1e6);
|
);
|
||||||
|
if (performResourceChecks && !await runnerSupportsOverlayAnalysis(ramInput, logger)) {
|
||||||
overlayDatabaseMode = "none" /* None */;
|
overlayDatabaseMode = "none" /* None */;
|
||||||
useOverlayDatabaseCaching = false;
|
|
||||||
logger.info(
|
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} due to insufficient disk space (${diskSpaceMb} MB).`
|
|
||||||
);
|
|
||||||
} else if (memoryFlagValue < 5 * 1024) {
|
|
||||||
overlayDatabaseMode = "none" /* None */;
|
|
||||||
useOverlayDatabaseCaching = false;
|
|
||||||
logger.info(
|
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} due to insufficient memory for CodeQL analysis (${memoryFlagValue} MB).`
|
|
||||||
);
|
|
||||||
} else if (isAnalyzingPullRequest()) {
|
} else if (isAnalyzingPullRequest()) {
|
||||||
overlayDatabaseMode = "overlay" /* Overlay */;
|
overlayDatabaseMode = "overlay" /* Overlay */;
|
||||||
useOverlayDatabaseCaching = true;
|
useOverlayDatabaseCaching = true;
|
||||||
|
|||||||
5
lib/resolve-environment-action.js
generated
5
lib/resolve-environment-action.js
generated
@@ -84117,6 +84117,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/setup-codeql-action.js
generated
5
lib/setup-codeql-action.js
generated
@@ -84029,6 +84029,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/start-proxy-action-post.js
generated
5
lib/start-proxy-action-post.js
generated
@@ -119592,6 +119592,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/start-proxy-action.js
generated
5
lib/start-proxy-action.js
generated
@@ -100181,6 +100181,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/upload-lib.js
generated
5
lib/upload-lib.js
generated
@@ -87182,6 +87182,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/upload-sarif-action-post.js
generated
5
lib/upload-sarif-action-post.js
generated
@@ -119758,6 +119758,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
5
lib/upload-sarif-action.js
generated
5
lib/upload-sarif-action.js
generated
@@ -86979,6 +86979,11 @@ var featureConfig = {
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: void 0
|
minimumVersion: void 0
|
||||||
},
|
},
|
||||||
|
["overlay_analysis_skip_resource_checks" /* OverlayAnalysisSkipResourceChecks */]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: void 0
|
||||||
|
},
|
||||||
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
["python_default_is_to_not_extract_stdlib" /* PythonDefaultIsToNotExtractStdlib */]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
@@ -1231,6 +1231,28 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay-base database on default branch if runner disk space is too low and skip resource checks flag is enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [
|
||||||
|
Feature.OverlayAnalysis,
|
||||||
|
Feature.OverlayAnalysisCodeScanningJavascript,
|
||||||
|
Feature.OverlayAnalysisSkipResourceChecks,
|
||||||
|
],
|
||||||
|
isDefaultBranch: true,
|
||||||
|
diskUsage: {
|
||||||
|
numAvailableBytes: 1_000_000_000,
|
||||||
|
numTotalBytes: 100_000_000_000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.OverlayBase,
|
||||||
|
useOverlayDatabaseCaching: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"No overlay-base database on default branch if memory flag is too low",
|
"No overlay-base database on default branch if memory flag is too low",
|
||||||
@@ -1249,6 +1271,25 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay-base database on default branch if memory flag is too low and skip resource checks flag is enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [
|
||||||
|
Feature.OverlayAnalysis,
|
||||||
|
Feature.OverlayAnalysisCodeScanningJavascript,
|
||||||
|
Feature.OverlayAnalysisSkipResourceChecks,
|
||||||
|
],
|
||||||
|
isDefaultBranch: true,
|
||||||
|
memoryFlagValue: 3072,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.OverlayBase,
|
||||||
|
useOverlayDatabaseCaching: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"No overlay-base database on default branch when code-scanning feature enabled with disable-default-queries",
|
"No overlay-base database on default branch when code-scanning feature enabled with disable-default-queries",
|
||||||
@@ -1440,6 +1481,28 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay analysis on PR if runner disk space is too low and skip resource checks flag is enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [
|
||||||
|
Feature.OverlayAnalysis,
|
||||||
|
Feature.OverlayAnalysisCodeScanningJavascript,
|
||||||
|
Feature.OverlayAnalysisSkipResourceChecks,
|
||||||
|
],
|
||||||
|
isPullRequest: true,
|
||||||
|
diskUsage: {
|
||||||
|
numAvailableBytes: 1_000_000_000,
|
||||||
|
numTotalBytes: 100_000_000_000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
|
||||||
|
useOverlayDatabaseCaching: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"No overlay analysis on PR if we can't determine runner disk space",
|
"No overlay analysis on PR if we can't determine runner disk space",
|
||||||
@@ -1476,6 +1539,25 @@ test(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
test(
|
||||||
|
getOverlayDatabaseModeMacro,
|
||||||
|
"Overlay analysis on PR if memory flag is too low and skip resource checks flag is enabled",
|
||||||
|
{
|
||||||
|
languages: [KnownLanguage.javascript],
|
||||||
|
features: [
|
||||||
|
Feature.OverlayAnalysis,
|
||||||
|
Feature.OverlayAnalysisCodeScanningJavascript,
|
||||||
|
Feature.OverlayAnalysisSkipResourceChecks,
|
||||||
|
],
|
||||||
|
isPullRequest: true,
|
||||||
|
memoryFlagValue: 3072,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
|
||||||
|
useOverlayDatabaseCaching: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
test(
|
test(
|
||||||
getOverlayDatabaseModeMacro,
|
getOverlayDatabaseModeMacro,
|
||||||
"No overlay analysis on PR when code-scanning feature enabled with disable-default-queries",
|
"No overlay analysis on PR when code-scanning feature enabled with disable-default-queries",
|
||||||
|
|||||||
@@ -636,6 +636,38 @@ async function isOverlayAnalysisFeatureEnabled(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function runnerSupportsOverlayAnalysis(
|
||||||
|
ramInput: string | undefined,
|
||||||
|
logger: Logger,
|
||||||
|
): Promise<boolean> {
|
||||||
|
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);
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${OverlayDatabaseMode.None} ` +
|
||||||
|
`due to insufficient disk space (${diskSpaceMb} MB).`,
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const memoryFlagValue = getMemoryFlagValue(ramInput, logger);
|
||||||
|
if (memoryFlagValue < 5 * 1024) {
|
||||||
|
logger.info(
|
||||||
|
`Setting overlay database mode to ${OverlayDatabaseMode.None} ` +
|
||||||
|
`due to insufficient memory for CodeQL analysis (${memoryFlagValue} MB).`,
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate and validate the overlay database mode and caching to use.
|
* Calculate and validate the overlay database mode and caching to use.
|
||||||
*
|
*
|
||||||
@@ -694,29 +726,15 @@ export async function getOverlayDatabaseMode(
|
|||||||
codeScanningConfig,
|
codeScanningConfig,
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
const diskUsage = await checkDiskUsage(logger);
|
const performResourceChecks = !(await features.getValue(
|
||||||
const memoryFlagValue = getMemoryFlagValue(ramInput, logger);
|
Feature.OverlayAnalysisSkipResourceChecks,
|
||||||
|
codeql,
|
||||||
|
));
|
||||||
if (
|
if (
|
||||||
diskUsage === undefined ||
|
performResourceChecks &&
|
||||||
diskUsage.numAvailableBytes < OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES
|
!(await runnerSupportsOverlayAnalysis(ramInput, logger))
|
||||||
) {
|
) {
|
||||||
const diskSpaceMb =
|
|
||||||
diskUsage === undefined
|
|
||||||
? 0
|
|
||||||
: Math.round(diskUsage.numAvailableBytes / 1_000_000);
|
|
||||||
overlayDatabaseMode = OverlayDatabaseMode.None;
|
overlayDatabaseMode = OverlayDatabaseMode.None;
|
||||||
useOverlayDatabaseCaching = false;
|
|
||||||
logger.info(
|
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
|
||||||
`due to insufficient disk space (${diskSpaceMb} MB).`,
|
|
||||||
);
|
|
||||||
} else if (memoryFlagValue < 5 * 1024) {
|
|
||||||
overlayDatabaseMode = OverlayDatabaseMode.None;
|
|
||||||
useOverlayDatabaseCaching = false;
|
|
||||||
logger.info(
|
|
||||||
`Setting overlay database mode to ${overlayDatabaseMode} ` +
|
|
||||||
`due to insufficient memory for CodeQL analysis (${memoryFlagValue} MB).`,
|
|
||||||
);
|
|
||||||
} else if (isAnalyzingPullRequest()) {
|
} else if (isAnalyzingPullRequest()) {
|
||||||
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
|
overlayDatabaseMode = OverlayDatabaseMode.Overlay;
|
||||||
useOverlayDatabaseCaching = true;
|
useOverlayDatabaseCaching = true;
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ export enum Feature {
|
|||||||
OverlayAnalysisRuby = "overlay_analysis_ruby",
|
OverlayAnalysisRuby = "overlay_analysis_ruby",
|
||||||
OverlayAnalysisRust = "overlay_analysis_rust",
|
OverlayAnalysisRust = "overlay_analysis_rust",
|
||||||
OverlayAnalysisSwift = "overlay_analysis_swift",
|
OverlayAnalysisSwift = "overlay_analysis_swift",
|
||||||
|
OverlayAnalysisSkipResourceChecks = "overlay_analysis_skip_resource_checks",
|
||||||
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",
|
UploadOverlayDbToApi = "upload_overlay_db_to_api",
|
||||||
@@ -283,6 +284,11 @@ export const featureConfig: Record<
|
|||||||
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SWIFT",
|
||||||
minimumVersion: undefined,
|
minimumVersion: undefined,
|
||||||
},
|
},
|
||||||
|
[Feature.OverlayAnalysisSkipResourceChecks]: {
|
||||||
|
defaultValue: false,
|
||||||
|
envVar: "CODEQL_ACTION_OVERLAY_ANALYSIS_SKIP_RESOURCE_CHECKS",
|
||||||
|
minimumVersion: undefined,
|
||||||
|
},
|
||||||
[Feature.PythonDefaultIsToNotExtractStdlib]: {
|
[Feature.PythonDefaultIsToNotExtractStdlib]: {
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
envVar: "CODEQL_ACTION_DISABLE_PYTHON_STANDARD_LIBRARY_EXTRACTION",
|
||||||
|
|||||||
Reference in New Issue
Block a user