Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
11889c2
Return keys of restored caches from `downloadDependencyCaches`
mbg Nov 14, 2025
594c0cc
Store restored keys in action state
mbg Nov 14, 2025
51c9af3
Don't try to upload cache if we have restored a cache with the same key
mbg Nov 14, 2025
1ed85b4
Add test coverage for `uploadDependencyCaches`
mbg Nov 14, 2025
3b63581
Bump the npm-minor group with 2 updates
dependabot[bot] Nov 17, 2025
01577d4
Bump @eslint/compat from 1.4.1 to 2.0.0
dependabot[bot] Nov 17, 2025
cd808e1
Bump @types/sinon from 17.0.4 to 21.0.0
dependabot[bot] Nov 17, 2025
d4a7ccd
Rebuild
github-actions[bot] Nov 17, 2025
4f39cef
Rebuild
github-actions[bot] Nov 17, 2025
b595847
Rebuild
github-actions[bot] Nov 17, 2025
4f746e4
Overlay: Fall back to full analysis if runner disk space is low
kaspersv Nov 18, 2025
726a2a0
Overlay: Increase disk storage threshold to 20GB
kaspersv Nov 18, 2025
249458a
Merge pull request #3296 from github/mbg/dependency-caching/skip-uplo…
mbg Nov 18, 2025
fea2500
Update changelog and version after v4.31.4
github-actions[bot] Nov 18, 2025
28f4a61
Merge remote-tracking branch 'origin/main' into mergeback/v4.31.4-to-…
github-actions[bot] Nov 18, 2025
ce9b526
Rebuild
github-actions[bot] Nov 18, 2025
e24190a
Remove unused dependencies
henrymercer Nov 18, 2025
cac5926
Delete unused exports
henrymercer Nov 18, 2025
5da2098
Add feature flag for uploading overlay DBs to API
henrymercer Nov 18, 2025
31042e9
Rename function calls to make destructive operation clearer
henrymercer Nov 18, 2025
c649c59
Upload overlay base DB to API behind FF
henrymercer Nov 18, 2025
378219c
Merge pull request #3313 from github/mergeback/v4.31.4-to-main-e12f0178
henrymercer Nov 18, 2025
ed80d6e
Overlay: Reorder available disk space check
kaspersv Nov 19, 2025
4eccb37
Overlay: Round available disk space in MB
kaspersv Nov 19, 2025
86d2aa5
Merge pull request #3316 from github/henrymercer/upload-overlay-to-api
henrymercer Nov 19, 2025
ce07e7d
Merge pull request #3310 from github/kaspersv/overlay-disk-available-…
kaspersv Nov 19, 2025
de74d76
Overlay: Increase minimum CLI version
kaspersv Nov 19, 2025
a102014
Merge pull request #3317 from github/kaspersv/bump-minimum-overlay-ve…
kaspersv Nov 19, 2025
90871e1
Merge pull request #3304 from github/dependabot/npm_and_yarn/npm-mino…
mbg Nov 19, 2025
e818008
Merge pull request #3305 from github/dependabot/npm_and_yarn/eslint/c…
mbg Nov 19, 2025
0b43179
Merge pull request #3306 from github/dependabot/npm_and_yarn/types/si…
mbg Nov 19, 2025
112cd07
Merge branch 'main' into henrymercer/dead-code-elimination
henrymercer Nov 19, 2025
ac359aa
Add return type
henrymercer Nov 19, 2025
ce729e4
Merge pull request #3315 from github/henrymercer/dead-code-elimination
henrymercer Nov 19, 2025
617a96e
Update changelog for v4.31.5
github-actions[bot] Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Overlay: Fall back to full analysis if runner disk space is low
  • Loading branch information
kaspersv committed Nov 18, 2025
commit 4f746e4a60b95e41fe6c91e3f14806cd10a16621
2 changes: 2 additions & 0 deletions lib/analyze-action-post.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/analyze-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/autobuild-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/init-action-post.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 28 additions & 16 deletions lib/init-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/resolve-environment-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/setup-codeql-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/start-proxy-action-post.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/start-proxy-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/upload-lib.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/upload-sarif-action-post.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/upload-sarif-action.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

100 changes: 100 additions & 0 deletions src/config-utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ import {
ConfigurationError,
withTmpDir,
BuildMode,
DiskUsage,
} from "./util";
import * as util from "./util";

setupTests(test);

Expand Down Expand Up @@ -995,6 +997,7 @@ interface OverlayDatabaseModeTestSetup {
codeqlVersion: string;
gitRoot: string | undefined;
codeScanningConfig: configUtils.UserConfig;
diskUsage: DiskUsage | undefined;
}

const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = {
Expand All @@ -1007,6 +1010,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({
Expand Down Expand Up @@ -1039,6 +1046,8 @@ const getOverlayDatabaseModeMacro = test.macro({
setup.overlayDatabaseEnvVar;
}

sinon.stub(util, "checkDiskUsage").resolves(setup.diskUsage);

// Mock feature flags
const features = createFeatures(setup.features);

Expand Down Expand Up @@ -1196,6 +1205,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",
Expand Down Expand Up @@ -1366,6 +1414,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",
Expand Down Expand Up @@ -1500,6 +1587,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",
Expand Down
65 changes: 46 additions & 19 deletions src/config-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = 15000;
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;
Expand Down Expand Up @@ -667,28 +679,43 @@ export async function getOverlayDatabaseMode(
`Setting overlay database mode to ${overlayDatabaseMode} ` +
"from the CODEQL_OVERLAY_DATABASE_MODE environment variable.",
);
} else if (
await isOverlayAnalysisFeatureEnabled(
features,
codeql,
languages,
codeScanningConfig,
)
) {
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;
} else {
const diskUsage = await checkDiskUsage(logger);
if (
diskUsage === undefined ||
diskUsage.numAvailableBytes < OVERLAY_MINIMUM_AVAILABLE_DISK_SPACE_BYTES
) {
const diskSpaceMb =
diskUsage === undefined ? 0 : diskUsage.numAvailableBytes / 1_000_000;
overlayDatabaseMode = OverlayDatabaseMode.None;
useOverlayDatabaseCaching = false;
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 (
await isOverlayAnalysisFeatureEnabled(
features,
codeql,
languages,
codeScanningConfig,
)
) {
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.",
);
}
}
}

Expand Down
Loading