Skip to content

Commit 445a2a9

Browse files
committed
Record overlay disablement reason
1 parent 1824278 commit 445a2a9

File tree

6 files changed

+203
-141
lines changed

6 files changed

+203
-141
lines changed

lib/init-action.js

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

src/codeql.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import { CliError } from "./cli-errors";
1515
import * as codeql from "./codeql";
1616
import {
1717
AugmentationProperties,
18-
Config,
19-
defaultAugmentationProperties,
2018
generateCodeScanningConfig,
21-
} from "./config-utils";
19+
defaultAugmentationProperties,
20+
} from "./config/db-config";
21+
import type { Config } from "./config-utils";
2222
import * as defaults from "./defaults.json";
2323
import { DocUrl } from "./doc-url";
2424
import { KnownLanguage } from "./languages";

src/config-utils.test.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import { AnalysisKind, supportedAnalysisKinds } from "./analyses";
1111
import * as api from "./api-client";
1212
import { CachingKind } from "./caching-utils";
1313
import { createStubCodeQL } from "./codeql";
14+
import { UserConfig } from "./config/db-config";
1415
import * as configUtils from "./config-utils";
15-
import { OverlayDisabledReason } from "./config-utils";
1616
import * as errorMessages from "./error-messages";
1717
import { Feature } from "./feature-flags";
1818
import { RepositoryProperties } from "./feature-flags/properties";
@@ -21,6 +21,7 @@ import { GitVersionInfo } from "./git-utils";
2121
import { KnownLanguage, Language } from "./languages";
2222
import { getRunnerLogger } from "./logging";
2323
import { CODEQL_OVERLAY_MINIMUM_VERSION, OverlayDatabaseMode } from "./overlay";
24+
import { OverlayDisabledReason } from "./overlay/diagnostics";
2425
import * as overlayStatus from "./overlay/status";
2526
import { parseRepositoryNwo } from "./repository";
2627
import {
@@ -248,7 +249,7 @@ test("initActionState doesn't throw if there are queries configured in the repos
248249
};
249250

250251
// Expected configuration for a CQ-only analysis.
251-
const computedConfig: configUtils.UserConfig = {
252+
const computedConfig: UserConfig = {
252253
"disable-default-queries": true,
253254
queries: [{ uses: "code-quality" }],
254255
"query-filters": [],
@@ -493,7 +494,7 @@ test("load non-empty input", async (t) => {
493494

494495
fs.mkdirSync(path.join(tempDir, "foo"));
495496

496-
const userConfig: configUtils.UserConfig = {
497+
const userConfig: UserConfig = {
497498
name: "my config",
498499
"disable-default-queries": true,
499500
queries: [{ uses: "./foo" }],
@@ -981,7 +982,7 @@ interface OverlayDatabaseModeTestSetup {
981982
codeqlVersion: string;
982983
gitRoot: string | undefined;
983984
gitVersion: GitVersionInfo | undefined;
984-
codeScanningConfig: configUtils.UserConfig;
985+
codeScanningConfig: UserConfig;
985986
diskUsage: DiskUsage | undefined;
986987
memoryFlagValue: number;
987988
shouldSkipOverlayAnalysisDueToCachedStatus: boolean;
@@ -1189,7 +1190,7 @@ test(
11891190
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
11901191
codeScanningConfig: {
11911192
packs: ["some-custom-pack@1.0.0"],
1192-
} as configUtils.UserConfig,
1193+
} as UserConfig,
11931194
isDefaultBranch: true,
11941195
},
11951196
{
@@ -1434,7 +1435,7 @@ test(
14341435
],
14351436
codeScanningConfig: {
14361437
"disable-default-queries": true,
1437-
} as configUtils.UserConfig,
1438+
} as UserConfig,
14381439
isDefaultBranch: true,
14391440
},
14401441
{
@@ -1455,7 +1456,7 @@ test(
14551456
],
14561457
codeScanningConfig: {
14571458
packs: ["some-custom-pack@1.0.0"],
1458-
} as configUtils.UserConfig,
1459+
} as UserConfig,
14591460
isDefaultBranch: true,
14601461
},
14611462
{
@@ -1476,7 +1477,7 @@ test(
14761477
],
14771478
codeScanningConfig: {
14781479
queries: [{ uses: "some-query.ql" }],
1479-
} as configUtils.UserConfig,
1480+
} as UserConfig,
14801481
isDefaultBranch: true,
14811482
},
14821483
{
@@ -1497,7 +1498,7 @@ test(
14971498
],
14981499
codeScanningConfig: {
14991500
"query-filters": [{ include: { "security-severity": "high" } }],
1500-
} as configUtils.UserConfig,
1501+
} as UserConfig,
15011502
isDefaultBranch: true,
15021503
},
15031504
{
@@ -1574,7 +1575,7 @@ test(
15741575
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
15751576
codeScanningConfig: {
15761577
packs: ["some-custom-pack@1.0.0"],
1577-
} as configUtils.UserConfig,
1578+
} as UserConfig,
15781579
isPullRequest: true,
15791580
},
15801581
{
@@ -1712,7 +1713,7 @@ test(
17121713
],
17131714
codeScanningConfig: {
17141715
"disable-default-queries": true,
1715-
} as configUtils.UserConfig,
1716+
} as UserConfig,
17161717
isPullRequest: true,
17171718
},
17181719
{
@@ -1733,7 +1734,7 @@ test(
17331734
],
17341735
codeScanningConfig: {
17351736
packs: ["some-custom-pack@1.0.0"],
1736-
} as configUtils.UserConfig,
1737+
} as UserConfig,
17371738
isPullRequest: true,
17381739
},
17391740
{
@@ -1754,7 +1755,7 @@ test(
17541755
],
17551756
codeScanningConfig: {
17561757
queries: [{ uses: "some-query.ql" }],
1757-
} as configUtils.UserConfig,
1758+
} as UserConfig,
17581759
isPullRequest: true,
17591760
},
17601761
{
@@ -1775,7 +1776,7 @@ test(
17751776
],
17761777
codeScanningConfig: {
17771778
"query-filters": [{ include: { "security-severity": "high" } }],
1778-
} as configUtils.UserConfig,
1779+
} as UserConfig,
17791780
isPullRequest: true,
17801781
},
17811782
{

src/config-utils.ts

Lines changed: 8 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@ import {
2727
} from "./config/db-config";
2828
import {
2929
addNoLanguageDiagnostic,
30-
makeDiagnostic,
3130
makeTelemetryDiagnostic,
3231
} from "./diagnostics";
3332
import { shouldPerformDiffInformedAnalysis } from "./diff-informed-analysis-utils";
34-
import { DocUrl } from "./doc-url";
3533
import { EnvVar } from "./environment";
3634
import * as errorMessages from "./error-messages";
3735
import { Feature, FeatureEnablement } from "./feature-flags";
@@ -50,6 +48,10 @@ import {
5048
import { KnownLanguage, Language } from "./languages";
5149
import { Logger } from "./logging";
5250
import { CODEQL_OVERLAY_MINIMUM_VERSION, OverlayDatabaseMode } from "./overlay";
51+
import {
52+
addOverlayDisablementDiagnostics,
53+
OverlayDisabledReason,
54+
} from "./overlay/diagnostics";
5355
import { shouldSkipOverlayAnalysis } from "./overlay/status";
5456
import { RepositoryNwo } from "./repository";
5557
import { ToolsFeature } from "./tools-features";
@@ -69,32 +71,6 @@ import {
6971
DiskUsage,
7072
} from "./util";
7173

72-
/**
73-
* The reason why overlay analysis was disabled, if applicable.
74-
*/
75-
export enum OverlayDisabledReason {
76-
/** Overlay analysis was disabled by a repository property. */
77-
DisabledByRepositoryProperty = "disabled-by-repository-property",
78-
/** Overlay analysis feature was not enabled. */
79-
FeatureNotEnabled = "feature-not-enabled",
80-
/** The build mode is incompatible with overlay analysis. */
81-
IncompatibleBuildMode = "incompatible-build-mode",
82-
/** The CodeQL CLI version is too old to support overlay analysis. */
83-
IncompatibleCodeQl = "incompatible-codeql",
84-
/** The Git version could not be determined or is too old. */
85-
IncompatibleGit = "incompatible-git",
86-
/** The runner does not have enough disk space or memory. */
87-
InsufficientResources = "insufficient-resources",
88-
/** The source root is not inside a git repository. */
89-
NoGitRoot = "no-git-root",
90-
/** Overlay analysis was skipped because it previously failed with similar hardware resources. */
91-
SkippedDueToCachedStatus = "skipped-due-to-cached-status",
92-
/** Disk usage could not be determined during the overlay status check. */
93-
UnableToDetermineDiskUsage = "unable-to-determine-disk-usage",
94-
}
95-
96-
export * from "./config/db-config";
97-
9874
/**
9975
* The minimum available disk space (in MB) required to perform overlay analysis.
10076
* If the available disk space on the runner is below the threshold when deciding
@@ -1119,61 +1095,11 @@ export async function initConfig(
11191095
config.overlayDatabaseMode = overlayDatabaseMode;
11201096
config.useOverlayDatabaseCaching = useOverlayDatabaseCaching;
11211097

1122-
if (
1123-
overlayDisabledReason === OverlayDisabledReason.SkippedDueToCachedStatus
1124-
) {
1125-
addNoLanguageDiagnostic(
1098+
if (overlayDisabledReason !== undefined) {
1099+
await addOverlayDisablementDiagnostics(
11261100
config,
1127-
makeDiagnostic(
1128-
"codeql-action/overlay-skipped-due-to-cached-status",
1129-
"Skipped improved incremental analysis because it failed previously with similar hardware resources",
1130-
{
1131-
attributes: {
1132-
languages: config.languages,
1133-
},
1134-
markdownMessage:
1135-
`Improved incremental analysis was skipped because it previously failed for this repository ` +
1136-
`with CodeQL version ${(await inputs.codeql.getVersion()).version} on a runner with similar hardware resources. ` +
1137-
"Improved incremental analysis may require a significant amount of disk space for some repositories. " +
1138-
"If you want to enable improved incremental analysis, increase the disk space available " +
1139-
"to the runner. If that doesn't help, contact GitHub Support for further assistance.\n\n" +
1140-
"Improved incremental analysis will be automatically retried when the next version of CodeQL is released. " +
1141-
`You can also manually trigger a retry by [removing](${DocUrl.DELETE_ACTIONS_CACHE_ENTRIES}) \`codeql-overlay-status-*\` entries from the Actions cache.`,
1142-
severity: "note",
1143-
visibility: {
1144-
cliSummaryTable: true,
1145-
statusPage: true,
1146-
telemetry: true,
1147-
},
1148-
},
1149-
),
1150-
);
1151-
}
1152-
1153-
if (
1154-
overlayDisabledReason === OverlayDisabledReason.DisabledByRepositoryProperty
1155-
) {
1156-
addNoLanguageDiagnostic(
1157-
config,
1158-
makeDiagnostic(
1159-
"codeql-action/overlay-disabled-by-repository-property",
1160-
"Improved incremental analysis disabled by repository property",
1161-
{
1162-
attributes: {
1163-
languages: config.languages,
1164-
},
1165-
markdownMessage:
1166-
"Improved incremental analysis has been disabled because the " +
1167-
`\`${RepositoryPropertyName.DISABLE_OVERLAY}\` repository property is set to \`true\`. ` +
1168-
"To re-enable improved incremental analysis, set this property to `false` or remove it.",
1169-
severity: "note",
1170-
visibility: {
1171-
cliSummaryTable: true,
1172-
statusPage: true,
1173-
telemetry: true,
1174-
},
1175-
},
1176-
),
1101+
inputs.codeql,
1102+
overlayDisabledReason,
11771103
);
11781104
}
11791105

0 commit comments

Comments
 (0)