Skip to content

Commit 7b7a951

Browse files
committed
Add status page diagnostic when overlay skipped
1 parent 0c47ae1 commit 7b7a951

File tree

8 files changed

+95
-21
lines changed

8 files changed

+95
-21
lines changed

lib/analyze-action.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/init-action-post.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/init-action.js

Lines changed: 34 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/upload-lib.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/upload-sarif-action.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/config-utils.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,7 @@ const getOverlayDatabaseModeMacro = test.macro({
10151015
expected: {
10161016
overlayDatabaseMode: OverlayDatabaseMode;
10171017
useOverlayDatabaseCaching: boolean;
1018+
skippedDueToCachedStatus?: boolean;
10181019
},
10191020
) => {
10201021
return await withTmpDir(async (tempDir) => {
@@ -1085,7 +1086,10 @@ const getOverlayDatabaseModeMacro = test.macro({
10851086
logger,
10861087
);
10871088

1088-
t.deepEqual(result, expected);
1089+
t.deepEqual(result, {
1090+
skippedDueToCachedStatus: false,
1091+
...expected,
1092+
});
10891093
} finally {
10901094
// Restore the original environment
10911095
process.env = originalEnv;
@@ -1318,6 +1322,7 @@ test(
13181322
{
13191323
overlayDatabaseMode: OverlayDatabaseMode.None,
13201324
useOverlayDatabaseCaching: false,
1325+
skippedDueToCachedStatus: true,
13211326
},
13221327
);
13231328

@@ -1337,6 +1342,7 @@ test(
13371342
{
13381343
overlayDatabaseMode: OverlayDatabaseMode.None,
13391344
useOverlayDatabaseCaching: false,
1345+
skippedDueToCachedStatus: true,
13401346
},
13411347
);
13421348

src/config-utils.ts

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ import {
2727
} from "./config/db-config";
2828
import {
2929
addNoLanguageDiagnostic,
30+
makeDiagnostic,
3031
makeTelemetryDiagnostic,
3132
} from "./diagnostics";
3233
import { shouldPerformDiffInformedAnalysis } from "./diff-informed-analysis-utils";
34+
import { DocUrl } from "./doc-url";
3335
import { EnvVar } from "./environment";
3436
import * as errorMessages from "./error-messages";
3537
import { Feature, FeatureEnablement } from "./feature-flags";
@@ -739,9 +741,11 @@ export async function getOverlayDatabaseMode(
739741
): Promise<{
740742
overlayDatabaseMode: OverlayDatabaseMode;
741743
useOverlayDatabaseCaching: boolean;
744+
skippedDueToCachedStatus: boolean;
742745
}> {
743746
let overlayDatabaseMode = OverlayDatabaseMode.None;
744747
let useOverlayDatabaseCaching = false;
748+
let skippedDueToCachedStatus = false;
745749

746750
const modeEnv = process.env.CODEQL_OVERLAY_DATABASE_MODE;
747751
// Any unrecognized CODEQL_OVERLAY_DATABASE_MODE value will be ignored and
@@ -781,6 +785,7 @@ export async function getOverlayDatabaseMode(
781785
"Consider running CodeQL analysis on a larger runner.",
782786
);
783787
overlayDatabaseMode = OverlayDatabaseMode.None;
788+
skippedDueToCachedStatus = true;
784789
} else if (
785790
performResourceChecks &&
786791
!(await runnerSupportsOverlayAnalysis(diskUsage, ramInput, logger))
@@ -806,6 +811,7 @@ export async function getOverlayDatabaseMode(
806811
const nonOverlayAnalysis = {
807812
overlayDatabaseMode: OverlayDatabaseMode.None,
808813
useOverlayDatabaseCaching: false,
814+
skippedDueToCachedStatus,
809815
};
810816

811817
if (overlayDatabaseMode === OverlayDatabaseMode.None) {
@@ -870,6 +876,7 @@ export async function getOverlayDatabaseMode(
870876
return {
871877
overlayDatabaseMode,
872878
useOverlayDatabaseCaching,
879+
skippedDueToCachedStatus,
873880
};
874881
}
875882

@@ -1013,25 +1020,54 @@ export async function initConfig(
10131020
// and queries, which in turn depends on the user config and the augmentation
10141021
// properties. So we need to calculate the overlay database mode after the
10151022
// rest of the config has been populated.
1016-
const { overlayDatabaseMode, useOverlayDatabaseCaching } =
1017-
await getOverlayDatabaseMode(
1018-
inputs.codeql,
1019-
inputs.features,
1020-
config.languages,
1021-
inputs.sourceRoot,
1022-
config.buildMode,
1023-
inputs.ramInput,
1024-
config.computedConfig,
1025-
gitVersion,
1026-
logger,
1027-
);
1023+
const {
1024+
overlayDatabaseMode,
1025+
useOverlayDatabaseCaching,
1026+
skippedDueToCachedStatus: overlaySkippedDueToCachedStatus,
1027+
} = await getOverlayDatabaseMode(
1028+
inputs.codeql,
1029+
inputs.features,
1030+
config.languages,
1031+
inputs.sourceRoot,
1032+
config.buildMode,
1033+
inputs.ramInput,
1034+
config.computedConfig,
1035+
gitVersion,
1036+
logger,
1037+
);
10281038
logger.info(
10291039
`Using overlay database mode: ${overlayDatabaseMode} ` +
10301040
`${useOverlayDatabaseCaching ? "with" : "without"} caching.`,
10311041
);
10321042
config.overlayDatabaseMode = overlayDatabaseMode;
10331043
config.useOverlayDatabaseCaching = useOverlayDatabaseCaching;
10341044

1045+
if (overlaySkippedDueToCachedStatus) {
1046+
addNoLanguageDiagnostic(
1047+
config,
1048+
makeDiagnostic(
1049+
"codeql-action/overlay-skipped-due-to-cached-status",
1050+
"Overlay analysis skipped due to cached status",
1051+
{
1052+
attributes: {
1053+
languages: config.languages,
1054+
},
1055+
markdownMessage:
1056+
`Overlay analysis was skipped because it failed previously on this runner. ` +
1057+
"Running CodeQL analysis on a larger runner may allow overlay analysis to run successfully.\n\n" +
1058+
"Overlay analysis will be automatically retried when the next version of CodeQL is released. " +
1059+
`You can also manually trigger a retry by [removing](${DocUrl.DELETE_ACTIONS_CACHE_ENTRIES}) \`codeql-overlay-status-*\` entries from the Actions cache.`,
1060+
severity: "note",
1061+
visibility: {
1062+
cliSummaryTable: true,
1063+
statusPage: true,
1064+
telemetry: true,
1065+
},
1066+
},
1067+
),
1068+
);
1069+
}
1070+
10351071
if (
10361072
overlayDatabaseMode === OverlayDatabaseMode.Overlay ||
10371073
(await shouldPerformDiffInformedAnalysis(

src/doc-url.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ export enum DocUrl {
77
AUTOMATIC_BUILD_FAILED = "https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning/automatic-build-failed",
88
CODEQL_BUILD_MODES = "https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#codeql-build-modes",
99
DEFINE_ENV_VARIABLES = "https://docs.github.com/en/actions/learn-github-actions/variables#defining-environment-variables-for-a-single-workflow",
10+
DELETE_ACTIONS_CACHE_ENTRIES = "https://docs.github.com/en/actions/how-tos/manage-workflow-runs/manage-caches#deleting-cache-entries",
1011
SCANNING_ON_PUSH = "https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#scanning-on-push",
1112
SPECIFY_BUILD_STEPS_MANUALLY = "https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#about-specifying-build-steps-manually",
1213
SYSTEM_REQUIREMENTS = "https://codeql.github.com/docs/codeql-overview/system-requirements/",
13-
TRACK_CODE_SCANNING_ALERTS_ACROSS_RUNS = "https://docs.github.com/en/enterprise-cloud@latest/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning#providing-data-to-track-code-scanning-alerts-across-runs",
14+
TRACK_CODE_SCANNING_ALERTS_ACROSS_RUNS = "https://docs.github.com/en/code-security/reference/code-scanning/sarif-support-for-code-scanning#data-for-preventing-duplicated-alerts",
1415
}

0 commit comments

Comments
 (0)